在Python中访问argparse的参数值

时间:2014-04-14 19:53:42

标签: python

我正在尝试为我的程序设置一些简单的标志参数,但无法弄清楚如何访问它们。我有argparser:

   parser = argparse.ArgumentParser(description='Simple PostScript Interpreter')
   parser.add_argument('-s', action="store_true")
   parser.add_argument('-d', action="store_true")
   parser.parse_args(sys.argv[1:])

程序应该在命令行上使用sps.py -ssps.py -dsps.py。然后我只想检查-s标志是否已设置或-d标志是否已设置。如果两者都未设置,则只需默认为-d。

访问解析器设置的布尔值需要做什么?

3 个答案:

答案 0 :(得分:8)

您无需提供parse_args()任何参数。你这样称呼它:

>>> args = parser.parse_args()

将返回NameSpace个对象。您可以使用点表示法访问您的参数:

>>> args.s
False

>>> args.d
False

工作示例:

import argparse
parser = argparse.ArgumentParser(description='Simple PostScript Interpreter')
parser.add_argument('-s', action="store_true")
parser.add_argument('-d', action="store_true")
args = parser.parse_args()
print args

像这样运行:

msvalkon@Lunkwill:/tmp$ python sps.py
Namespace(d=False, s=False)

msvalkon@Lunkwill:/tmp$ python sps.py -d
Namespace(d=True, s=False)

msvalkon@Lunkwill:/tmp$ python sps.py -s
Namespace(d=False, s=True)

答案 1 :(得分:2)

尝试添加此内容:

args = parser.parse_args()
print args.s
print args.d

答案 2 :(得分:0)

您现有的代码大多是正确的:

parser = argparse.ArgumentParser(description='Simple PostScript Interpreter')
parser.add_argument('-s', action="store_true")
parser.add_argument('-d', action="store_true")
args = parser.parse_args()

虽然parse_args的默认参数不需要传递sys.argv[1:]。由于每个参数都是独立解析的,因此在解析参数后,您需要进行后处理步骤:

if not args.s and not args.d:
    args.s = True