我正在使用argparse
来解析命令行参数。
为了帮助调试,我想要print
一行包含Python脚本被调用时的参数。在argparse
中有没有简单的方法可以实现这个需求?
我正在使用argparse
来解析命令行参数。
为了帮助调试,我想要print
一行包含Python脚本被调用时的参数。在argparse
中有没有简单的方法可以实现这个需求?
ArgumentParser.parse_args
默认从 sys.argv
中获取参数。因此,如果您不更改该行为(通过传递其他内容给 parse_args
),则可以简单地打印 sys.argv
以获取传递给 Python 脚本的所有参数:
import sys
print(sys.argv)
或者,您也可以直接打印parse_args
返回的名称空间;这样,您就可以以参数解析器解释它们的方式获取所有值:
args = parser.parse_args()
print(args)
['C:\eclipse\plugins\org.python.pydev_5.9.2.201708151115\pysrc\runfiles.py', 'C:\eclipse_workspace\test_file_search.py', '--port', '58454', '--verbosity', '0']
在这种情况下,您应该使用vars来迭代argparse args:
parser = argparse.ArgumentParser(...
...
args = parser.parse_args()
for arg in vars(args):
print arg, getattr(args, arg)
print(' {} {}'.format(arg, getattr(args, arg) or ''))
其中 getattr(args, arg) or ''
是与你版本的主要区别,它可以防止在未使用可选参数的情况下打印出单词“None”。 - Bastianvars(args)
将参数作为dict
获取,然后您可以迭代dict
的键值对。args = parser.parse_args()
print(' '.join(f'{k}={v}' for k, v in vars(args).items()))
vars
can be replace by __dict__
. for k, v in args.__dict__.items():print(f"{k}: {v}")
` - haofeng
parser.parse_args()
需要必填参数,则此方法无效。在这种情况下是否有替代方法? - Conchylicultor