我以以下方式设置了argparse参数:
parser = argparse.ArgumentParser(description='foobar')
parser.add_argument('url', metavar='URL')
parser.add_argument('-k', dest='kindle_type', default='kindle3')
parser.add_argument('-n', dest='gallery_name', default='Gallery')
parser.add_argument('-d', dest='dropbox_dir')
args = parser.parse_args()
print parser.parse_args(['imgur_url', '-k'])
但是,当我运行script.py -k kindledx http://url.com
时,我得到以下内容错误:gallery2kindle.py: error: argument -k: expected one argument
当我在标志"-k"之后使用"kindledx"时,不是调用了一个参数吗?
当我在标志"-k"之后使用"kindledx"时,不是调用了一个参数吗?
是的,如果你在 args = parser.parse_args()
之后添加一个print args
,你可以看到解析工作:
~/coding$ python ap.py -k kindledx http://url.com
Namespace(dropbox_dir=None, gallery_name='Gallery', kindle_type='kindledx', url='http://url.com')
但在这一行
print parser.parse_args(['imgur_url', '-k'])
您不会将参数传递给 K。 比较
print parser.parse_args(['imgur_url', '-k', 'kindledx'])
产生
Namespace(dropbox_dir=None, gallery_name='Gallery', kindle_type='kindledx', url='imgur_url')
由于这是谷歌搜索此错误的第一个结果,我想分享一下,如果您遵循与 Linux 中的 Windows /
兼容的建议,它可能会发生:
arg_parser = argparse.ArgumentParser(
prefix_chars='-+/', description='desc')
这会导致-option /path/path
抛出expected one argument
即使它看起来有效。您需要用引号将其-option '/path/path'
或删除上述prefix_chars
中的/
来修复它。