我试图通过argparse
将一些日期传递给我的脚本,但不知怎的,它总会产生以下错误:
error: unrecognized arguments: -startdate -enddate -timeofday
我的代码如下:
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
我已经尝试使用连字符代替点作为分隔符,以及"真实"字符串而不是数字。什么都没有帮助。有任何想法吗?谢谢!
答案 0 :(得分:7)
您使用的是错误的字符:
>>> 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
值!这是U+2010 HYPHEN的UTF-8;请改用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