23
我只注意到在argparse行爲一直困擾我(想我從來沒有使用過的文件的列表啞前):爲什麼argparse給我一個列表中的列表?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('multi', action='append', nargs='+')
print(parser.parse_args())
這使我的輸出:
~$ ./testargs.py foo bar baz
Namespace(multi=[['foo', 'bar', 'baz']])
~$
我預計multi
爲['foo', 'bar', 'baz']
,而不是列表中的列表。原來,在處理之前我必須抓取args.multi[0]
,這並不是什麼大不了的事情,但感覺像是一個醜陋的疣,我想明白爲什麼它在那裏。
我在add_argument
上做了些什麼傻事,還是這只是一個不可避免的怪癖?
嗯,你是對的。我從文檔中得到了錯誤的印象。也許我應該看看我是否可以在一些事情上用更好的措辭發送補丁。 :) 謝謝! – 2011-03-03 05:18:22
但是,請注意,如果沒有'action ='append'',如果多次指定該選項,以前的值將被丟棄。例如''argv = [' - foo','a','b',' - foo','c']'會給'命名空間(foo = ['c'])''add_argument(' foo',nargs ='+')'。 – 2016-05-19 11:21:30