2016-04-26 19 views
0

argparseを正しく実行するにはいくつか問題があります。次のように以前は、私のスクリプトが実行されます。このように見えたコードでargparseでエラーが発生しました

script.py <input_file(s)> <output_filename>

cell_list_input = sys.argv[1:] 
cell_list_output = sys.argv[len(cell_list_input)] 
cell_list_input = cell_list_input[:len(cell_list_input)-1] 

しかし、私はちょうどそれを読みやすくするために、いくつかの引数解析を追加したいです使用可能です。私は今、この権利のようなルックスを実現しようとしているargparse同等

script.py -i <input_file(s)> -o <output_filename>

script.py --input_list <input_file(s)> --output <output_filename>

:理想的には、フォーマットは次のオプションと同様であろう

parser = argparse.ArgumentParser() 
parser.add_argument('-i', '--input_list', action='append', dest='input_list', default=[], help='Input list of cell names') 
parser.add_argument('-o', '--output', action='store', dest='output', help='Output file destination/name') 
cli = parser.parse_args() 

私が知っています私は何か間違っているが、何が分かりにくいようだ。どんな助けもありがとうございます。ありがとう!

+1

あなたが取得しているエラーは何ですか?これを試してみてください – somada141

+0

だから '-i'はどこですか?そして、あなたは「何か間違ったこと」を意味しますか? – jonrsharpe

+0

申し訳ありませんが、 '-i'オプションからエラーが発生しました:' error:unrecognized arguments: 'すべての引数が' -i'に渡されました – Jonathan

答えて

1

入力ファイルリストにはnargsを指定する必要があります。

parser.add_argument('-i', '--input_list', nargs="+", action='append', dest='input_list', default=[], help='Input list of cell names') 

コンプリート例:

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('-i', '--input_list', nargs="+", default=[], help='Input list of cell names') 
parser.add_argument('-o', '--output', help='Output file destination/name') 
cli = parser.parse_args() 
print cli 

結果:

$ python i.py -i a 
Namespace(input_list=['a'], output=None) 
$ python i.py -i a b c -o d 
Namespace(input_list=['a', 'b', 'c'], output='d') 
+0

笑...今、私のcli.cell_listは終了していますリストのリスト...それを解決する方法は何ですか?あるいは、これによって常にリストのリストが作成されますか? – Jonathan

+0

'action =" append "を取り除きます。私の最近の編集を参照してください。 –

+0

それは働いて、ありがとう! – Jonathan

関連する問題