2017-05-04 5 views
0

コンソールからPythonで書かれたプログラムに名前のリストを渡したいと思っています。例えば、私はこれと同様の方法(私はそれが理由bashの仕事べきではありません知っている)を使用したいと思います:Pythonでargparse.ArgumentParserを使用してコマンドラインから文字列のリストを渡して解析する方法は?

$ python myprog.py -n name1 name2 

だから、私はこのコードを試してみました:

# myprog.py 

from argparse import ArgumentParser 

parser = ArgumentParser() 
parser.add_argument('-n', '--names-list', default=[]) 
args = parser.parse_args() 

print(args.names_list) # I need ['name1', 'name2'] here 

につながったことエラー:

usage: myprog.py [-h] [-n NAMES_LIST] 
myprog.py: error: unrecognized arguments: name2 

私は引用符"name1 name2"と私のコードargs.names_list.split()でそれを分割して名前を渡すことができます知っています。しかし、私は好奇心が強いです、​​モジュール経由で文字列のリストを渡すより良い方法があります。

すべてのアイデアをいただければ幸いです。

ありがとうございます!

答えて

2

任意の数の引数を取るには、--names-listを定義する必要があります。

parser.add_argument('-n', '--names-list', nargs='+', default=[]) 

任意の数の引数を持つオプションは通常、しかし、位置引数とうまく再生されないことに注意してください。

# Is this 4 arguments to -n, or 
# 3 arguments and a single positional argument, or ... 
myprog.py -n a b c d 
1
parser.add_argument('-n', '--names-list', default=[], nargs='+') 
関連する問題