Argparse:期待一个论点

Ran*_* Ma 6 python argparse

我有以下方式设置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'])
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时script.py -k kindledx http://url.com,我收到以下错误:gallery2kindle.py: error: argument -k: expected one argument

当我在'-k'标志后使用'kindledx'时,不是一个被称为争论的论点吗?

DSM*_*DSM 7

当我在'-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')
Run Code Online (Sandbox Code Playgroud)

但在这一行

print parser.parse_args(['imgur_url', '-k'])
Run Code Online (Sandbox Code Playgroud)

没有把参数传给k.相比

print parser.parse_args(['imgur_url', '-k', 'kindledx'])
Run Code Online (Sandbox Code Playgroud)

哪个产生

Namespace(dropbox_dir=None, gallery_name='Gallery', kindle_type='kindledx', url='imgur_url')
Run Code Online (Sandbox Code Playgroud)