def args_parser():
parser = argparse.ArgumentParser(description='myparser')
parser.add_argument('--k', type=int, default=100, help = 'numbers')
return parser
parser = args_parser():
args = parser.parse_args([])
print(args) # see all values
print(args.k) # see just the k attribute
parse_args()
解析sys.argv
如在命令行提供。 parse_args([])
解析一個空列表,同樣,如果你已經調用的腳本不帶參數。我經常使用這樣的調用來測試解析器設置。
隨着你的論點定義[]
工作正常,並顯示了默認k
值。有了其他定義,[]
可能會產生錯誤。例如,如果您包括
parser.add_argument('infile', help='positional file name')
現在需要一個字符串。對於一個簡單的位置,就像不需要默認值,也沒有意義。但其他參數組合可以使用默認值。
我可以告訴你如何訪問在add_argument
命令中設置的default
,但涉及到一些未公開的功能。另外還有幾種定義默認值的方法,所以主題會變得複雜。
反正只是一個空列表運行parse_args
往往是不夠的。
你也可以把它顯示有少量的添加在幫助熱線默認:
parser.add_argument('--k', type=int, default=100, help = 'numbers, %(default)s')
例如,在一個交互式ipython
會話:
In [73]: parser=argparse.ArgumentParser()
In [74]: parser.add_argument('--k', type=int, default=100, help = 'numbers, %(default)s')
Out[74]: _StoreAction(option_strings=['--k'], dest='k', nargs=None,
const=None, default=100, type=<class 'int'>, choices=None,
help='numbers, %(default)s', metavar=None)
In [75]: parser.print_help()
usage: ipython3 [-h] [--k K]
optional arguments:
-h, --help show this help message and exit
--k K numbers, 100
In [76]: parser.parse_args([]) # displays args
Out[76]: Namespace(k=100)
In [78]: parser.parse_args(['--k','200'])
Out[78]: Namespace(k=200)
'ARGS = args_parser()。 parse_args()'?你必須做'args.k'得到'100',但在其他方面... – jonrsharpe
'parser.parse_args()。k' – metatoaster