Python中的可选命令行参数

时间:2012-02-16 19:17:36

标签: 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

如果我在没有参数的情况下运行“program.py”,则args.t将打印为“无”。 如果我运行“program.py -t”,则args.t将打印为“无”。 如果我运行“program.py -t foo”,则args.t将打印为“无”。

为什么我没有从命令行获取值到args.t?

3 个答案:

答案 0 :(得分:4)

不要将['-t']传递给parse_args。只是做:

args = parser.parse_args()

使用传递给parse_args的任何参数而不是命令行。因此,使用这个参数并不重要,你使用什么命令行,argparse永远不会看到它。

答案 1 :(得分:2)

该行

args = parser.parse_args(["-t"])

将命令行参数[“-t”]传递给解析器。您希望使用实际的命令行参数,因此将行更改为

args = parser.parse_args()

答案 2 :(得分:1)

使用const keyword argument

import argparse
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', const = 'baz', default = 'baz')
args = parser.parse_args()
print args.t

运行它会产生:

% test.py          # handled by `default`
baz
% test.py -t       # handled by `const`
baz
% test.py -t blah
blah