2012-06-12 31 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

不叫參數當我在'-k'之後使用'kindledx'時?

回答

6

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

那是,如果你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')