您使用了錯誤的字符:
>>> parser = argparse.ArgumentParser(description='This program downloads webcam images')
>>> parser.add_argument('‐startdate', type=str, help='startdate given as:dd.mm.YYYY')
_StoreAction(option_strings=[], dest='\xe2\x80\x90startdate', nargs=None, const=None, default=None, type=<type 'str'>, choices=None, help='startdate given as:dd.mm.YYYY', metavar=None)
注意dest
值有!這是UTF-8的U+2010 HYPHEN;改爲使用ASCII -
minus character。由於該字符串不以parser.prefix_chars
開頭,它甚至不被視爲可選參數,而是作爲位置。因此,option_strings
也是空的。幫助輸出也告訴你:
>>> parser.print_help()
usage: [-h] ‐startdate
This program downloads webcam images
positional arguments:
‐startdate startdate given as:dd.mm.YYYY
optional arguments:
-h, --help show this help message and exit
這是一個位置(必需)參數。
一般來說,確保你沒有使用文字處理器來編寫代碼;最有可能你的簡單ASCII -
破折號被你的編輯器取代看中‐
HYPHEN字符(注意它如何縮短)。這些編輯也會用更多風格的版本替換引號和其他標點符號。
如果我使用一個普通的ASCII減號工作的事情就好了:
>>> parser = argparse.ArgumentParser(description='This program downloads webcam images')
>>> parser.add_argument('-startdate', type=str, help='startdate given as:dd.mm.YYYY')
_StoreAction(option_strings=['-startdate'], dest='startdate', nargs=None, const=None, default=None, type=<type 'str'>, choices=None, help='startdate given as:dd.mm.YYYY', metavar=None)
>>> parser.print_help()
usage: [-h] [-startdate STARTDATE]
This program downloads webcam images
optional arguments:
-h, --help show this help message and exit
-startdate STARTDATE startdate given as:dd.mm.YYYY
我覺得長參數需要兩個破折號 - 單短線是單字符的參數。 – ThiefMaster
@ThiefMaster:不會,單一的破折號就好了。假設它是一個實際的ASCII短劃線。 –