私は機能を持っています:
def x(a,b,c)
このパターンに適合する変数値をコマンド ラインから収集するにはどうすればよいですか?
python test.py --x_center a --y_center b c
(c
たとえば、3 つ、4 つ、またはそれ以上の値を持つ)
次のようなことができます。
import argparse
def x(x_center, y_center, values):
print "X center:", x_center
print "Y center:", y_center
print "Values:", values
def main():
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument('-x', '--x-center', type=float, required=True)
parser.add_argument('-y', '--y-center', type=float, required=True)
parser.add_argument('values', type=float, nargs='*')
args = parser.parse_args()
x(args.x_center, args.y_center, args.values)
if __name__ == '__main__':
main()
やってみて:
$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]
モジュールを使用するにargparse
は、通常、main
関数 (およびそれを呼び出すボイラープレート) から始めます。main
関数では、ArgumentParser
. その後、いくつかの引数を追加する必要があります。
引数を追加するには、 を使用しますadd_argument
。
parser.add_argument('-x', '--x-center', type=float, required=True)
ここで-x
は、長いオプション バリアントを持つオプション を追加しています--x-center
。にtype
渡すadd_argument
は、それが である必要があることを伝えますfloat
(有効な float でない場合はエラーになります)。argparse
また、必須であることも伝えます。指定されていない場合は、エラーになります。
parser.add_argument('values', type=float, nargs='*')
これは前と同じですが、渡す文字列がダッシュで始まらないため、オプションではなく、オプションではない引数であると見なされます。繰り返しますが、float
s が欲しいと伝えます。nargs
複数の引数を取るように指定できます。*
任意の数の引数が必要であることを指定します。
最後に、コマンド ラインをparse_args
. これは、保存するオブジェクトを返します。
args
その後、そのオブジェクトのオプションと引数にアクセスし、プログラムで関連することを行うことができます。