在Python中访问argparse的参数值
我正在尝试为我的程序设置一些简单的标志参数,但不知道怎么访问它们。我有一个参数解析器:
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 -s
、sps.py -d
或者 sps.py
这几种输入。然后我只想检查一下 -s
这个标志是否被设置,或者 -d
这个标志是否被设置。如果两个标志都没有设置,那就默认使用 -d
。
我需要做什么才能访问解析器设置的布尔值?
3 个回答
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
4
试着加上这个:
args = parser.parse_args()
print args.s
print args.d
24
你不需要给 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)