我正在尝试为我的程序设置一些简单的标志参数,但无法弄清楚如何访问它们。我有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 -s
,sps.py -d
或sps.py
。然后我只想检查-s
标志是否已设置或-d
标志是否已设置。如果两者都未设置,则只需默认为-d。
访问解析器设置的布尔值需要做什么?
答案 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