我试图将一些日期传递argparse
给我的脚本,但不知何故它总是产生以下错误:
error: unrecognized arguments: -startdate -enddate -timeofday
Run Code Online (Sandbox Code Playgroud)
我的代码如下:
import argparse
parser = argparse.ArgumentParser(description='This program downloads webcam images')
parser.add_argument('?startdate', type=str, help='startdate given as:dd.mm.YYYY')
parser.add_argument('?enddate', type=str, help='enddate given as:dd.mm.YYYY')
parser.add_argument('?timeofday', type=str, help='time of day as:"HH:MM"')
args = parser.parse_args()
print args.startdate
print args.enddate
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用连字符而不是点作为分隔符,以及"真正的"字符串而不是数字.什么都没有帮助.有任何想法吗?谢谢!
您使用的是错误的字符:
>>> 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)
Run Code Online (Sandbox Code Playgroud)
注意dest
那里的价值!这是U + 2010 HYPHEN的UTF-8 ; 改为使用ASCII -
减号字符.因为字符串不是以字符串开头的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
Run Code Online (Sandbox Code Playgroud)
这是一个位置(必需)参数.
一般来说,确保你没有使用文字处理器来编写代码; 很可能你的简单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
Run Code Online (Sandbox Code Playgroud)