2016-01-25 116 views
7

我正在使用​​来解析命令行参数。用argparse打印命令行参数?

为了有助于调试,我想用print一行来说明Python脚本被调用的参数。​​内有一个简单的方法可以做到这一点吗?

回答

11

ArgumentParser.parse_args默认情况下仅从sys.argv获取参数。所以,如果你不改变这种行为(通过传递别的东西parse_args),你可以简单地打印sys.argv得到传递给Python脚本的所有参数:

import sys 
print(sys.argv) 

或者,你也可以只打印命名空间即parse_args返回;这样你的方式获得的参数解析器解释他们的所有值:

args = parser.parse_args() 
print(args) 
3

如果另一个python脚本内运行argparse,里面unittest测试它的时候,然后打印sys.argv中像将只打印主脚本的参数,如:

[ 'C:\日食\插件\ org.python.pydev_5.9.2.201708151115 \ pysrc \ runfiles.py',“C:\ eclipse_workspace \ test_file_sear ch.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