如何禁用argparse将参数包装到列表中

ziy*_*ang 0 python argparse

我有这样的解析器

parser = argparse.ArgumentParser()
parser.add_argument('--template', metavar='FILE', nargs=1, required=True)
Run Code Online (Sandbox Code Playgroud)

并传递这样的参数

myprog --template template.txt
Run Code Online (Sandbox Code Playgroud)

但是当我后来检查args从中获得的时候args = parser.parse_args()我会得到

['template.txt']
Run Code Online (Sandbox Code Playgroud)

我可以换平原'template.txt'吗?谢谢.

Mar*_*ers 5

nargs如果您不希望它成为列表,请不要使用:

parser.add_argument('--template', metavar='FILE', required=True)
Run Code Online (Sandbox Code Playgroud)

nargs选项文档:

请注意,nargs=1生成一个项目的列表.这与默认情况不同,默认情况下,项目由其自身生成.

如果未提供nargs关键字参数,则消耗的参数数由操作确定.通常,这意味着将使用单个命令行参数,并且将生成单个项(不是列表).