9

我按以下方式设置了 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”时,不是调用了参数吗?

4

2 回答 2

8

当我在标志“-k”之后使用“kindledx”时,不是调用了参数吗?

是的,如果你添加一个print argsafter args = parser.parse_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')
于 2012-06-12T15:45:28.077 回答
1

由于这是谷歌搜索此错误的第一个结果,我想分享如果您遵循与/Linux 中的 Windows 兼容的建议,它可能会发生:

arg_parser = argparse.ArgumentParser(
    prefix_chars='-+/', description='desc')

即使看起来有效,这也会导致-option /path/path抛出。expected one argument您需要在上面引用它-option '/path/path'或删除它来修复它。/prefix_chars

于 2019-08-21T08:24:57.830 回答