2016-01-25 161 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