2012-06-12 2 views
4

У меня есть 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']) 

Однако, когда я бегу script.py -k kindledx http://url.com, я получаю следующее сообщение об ошибке: gallery2kindle.py: error: argument -k: expected one argument

был не аргумент называется когда я использовал «kindledx» после флага «-k»?

ответ

6

Wasn't an argument called when I used 'kindledx' after flag '-k'?

Это было, и если добавить 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') 
Смежные вопросы