我使用argparse
来解析命令行参数。
为了帮助调试,我想print
一行,其中包含调用Python脚本的参数。在argparse
中有一种简单的方法吗?
答案 0 :(得分:20)
ArgumentParser.parse_args
仅从sys.argv
获取参数。因此,如果您不更改该行为(通过将其他内容传递给parse_args
),您只需打印sys.argv
即可将所有参数传递给Python脚本:
import sys
print(sys.argv)
或者,您也可以只打印parse_args
返回的命名空间;这样你就可以通过参数解析器解释它们的方式获得所有值:
args = parser.parse_args()
print(args)
答案 1 :(得分:12)
如果在另一个python脚本 中运行 argparse,就像在unittest内测试一样,然后打印 sys.argv 只会打印主脚本的参数,例如:
['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)
答案 2 :(得分:0)
您可以通过调用 dict
以 vars(args)
的形式获取参数
然后你可以遍历 dict
args = parser.parse_args()
print(' '.join(f'{k}={v}' for k, v in vars(args).items()))