在Python中访问argparse的参数值

22 投票
3 回答
22255 浏览
提问于 2025-04-18 02:43

我正在尝试为我的程序设置一些简单的标志参数,但不知道怎么访问它们。我有一个参数解析器:

   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 -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)

撰写回答