Python中的可选命令行参数
我试图为Python脚本(Windows下的2.7)检索可选的命令行参数,但事情进展得并不顺利。代码是:Python中的可选命令行参数,python,command-line-arguments,argparse,Python,Command Line Arguments,Argparse,我试图为Python脚本(Windows下的2.7)检索可选的命令行参数,但事情进展得并不顺利。代码是: parser = argparse.ArgumentParser(description = 'Process display arguments') parser.add_argument('-t', nargs = '?', default = 'baz') args = parser.parse_args(['-t']) print args.t 如果我在没有参数的情况下运行“pro
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', default = 'baz')
args = parser.parse_args(['-t'])
print args.t
如果我在没有参数的情况下运行“program.py
”,args.t将打印为无。
如果我运行“program.py-t
”,args.t将打印为无。
如果我运行“program.py-t foo
”,args.t将打印为无
为什么我没有将命令行中的值输入args.t?不要传递
['-t']
来解析参数。只要做:
args = parser.parse_args()
将使用传递给parse_args的任何参数,而不是命令行。因此,对于该参数,无论您使用什么命令行,argparse都不会看到它。使用:
运行它会产生:
% test.py # handled by `default`
baz
% test.py -t # handled by `const`
baz
% test.py -t blah
blah
线路
args = parser.parse_args(["-t"])
正在将命令行参数[“-t”]传递给解析器。您希望使用实际的命令行参数,因此将该行更改为
args = parser.parse_args()
现在'-h'也可以工作了!当示例从“print parser.parse_args(['-t'])移动到脚本中实际使用它时,我想我感到困惑。文档中对此进行了解释:注意,对于可选参数,还有一种情况-选项字符串存在,但后面没有命令行arg。在这种情况下,将生成const的值。
args = parser.parse_args()