用argparse打印命令行参数?

时间:2016-01-25 12:22:24

标签: python python-2.7 argparse

我使用argparse来解析命令行参数。

为了帮助调试,我想print一行,其中包含调用Python脚本的参数。在argparse中有一种简单的方法吗?

3 个答案:

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

感谢:https://stackoverflow.com/a/27181165/658497

答案 2 :(得分:0)

您可以通过调用 dictvars(args) 的形式获取参数 然后你可以遍历 dict

的键值对
args = parser.parse_args()
print(' '.join(f'{k}={v}' for k, v in vars(args).items()))