我以下列方式设置了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'时,是不是被称为参数?
答案 0 :(得分:7)
当我在'-k'标志后使用'kindledx'时,是不是被称为参数?
确实如此,如果您在print args
之后添加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')
答案 1 :(得分:0)
由于这是搜索该错误的第一个结果,因此我想分享一下,如果您遵循建议与Linux中的Windows /
兼容,则可能会发生这种情况:
arg_parser = argparse.ArgumentParser(
prefix_chars='-+/', description='desc')
这会导致-option /path/path
抛出expected one argument
,尽管看起来有效。您需要将其引用为-option '/path/path'
或删除上面/
中的prefix_chars
来解决。