2013-10-29 37 views
1

我看到這個頁面:http://docs.python.org/2/library/optparse.htmloptparse ARGS將一無所獲(蟒蛇)

寫了這個代碼:

parser = optparse.OptionParser(usage=use) 
parser.add_option("-z", dest="zipname") 
parser.add_option("-d", dest="dictionary") 

(options, args) = parser.parse_args() 
print len(args) 

所以我試了一下:

script.py -z打招呼。 zip -d world.txt

並得到:

>> 0

當我使用options.zipnameoptions.dictionary這是正常的,但沒有進入指定參數時,爲什麼呢?謝謝。

+2

注意:optparse被視爲折舊。您應該嘗試使用[argparse](http://docs.python.org/2/library/argparse.html#module-argparse)。 (我個人也喜歡使用[docparse](https://github.com/docopt/docopt),但它不是標準庫的一部分) – Michael0x2a

+0

@ Michael0x2a deprecated!= depreciated ... Just sayin'.. – twalberg

回答

3

args返回值parse_args是「處理所有選項後的剩餘位置參數」(http://docs.python.org/2/library/optparse.html#parsing-arguments)。它解析了你給它的所有參數,所以沒有什麼可以放在參數中。

如果你運行,例如,

script.py -z hello.zip -d world.txt foo bar 

然後2將被打印出來。

P.S.正如@ Michael0x2a在評論中指出的那樣,optparse庫已被棄用。看看argparse庫。

0

因爲args是加工後剩下的參數。從docs

parse_args()返回兩個值:

  • 選項,包含所有選項,e.g值的對象。如果 --file取單個字符串參數,則options.file將是用戶提供的文件名,或者如果用戶不提供該選項,則爲None
  • args,解析後剩餘的位置參數列表 選項