私は自分のプロジェクト設定のセットアップを作成するためにpythonを使用しますが、コマンドライン引数を取得するのに助けが必要です。
私は端末でこれを試してみました:
$python myfile.py var1 var2 var3
私のPythonファイルでは、入力されているすべての変数を使いたいのです。
import sys
print(sys.argv)
具体的には、python example.py one two three
を実行したとします。
>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']
import sys
sys.argv[1:]
引数のリストを表示します(pythonファイルの名前は含みません)
Python 2.7以降に付属する argparse
を強くお勧めします。
argparse
モジュールは、ボイラープレートコードを減らし、コードをより堅牢にします。これは、このモジュールがすべての標準的な使用例(サブコマンドを含む)を扱い、ヘルプと使用方法を生成し、ユーザー入力をチェックおよびサニタイズするためです。あなたはsys.argv
アプローチを使っています。そしてそれは無料です(組み込み)。
ここで小さな例:
import argparse
parser = argparse.ArgumentParser("simple_example")
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
args = parser.parse_args()
print(args.counter + 1)
そしてpython prog.py -h
の出力
usage: simple_example [-h] counter
positional arguments:
counter counter will be increased by 1 and printed.
optional arguments:
-h, --help show this help message and exit
python prog.py 1
の場合は予想通りです。
2
Pythonコード:
import sys
# main
param_1= sys.argv[1]
param_2= sys.argv[2]
param_3= sys.argv[3]
print 'Params=', param_1, param_2, param_3
呼び出し:
$python myfile.py var1 var2 var3
出力:
Params= var1 var2 var3
引数をリストとして取得するためにsys.argv
を使うことができます。
個々の要素にアクセスする必要がある場合は、
sys.argv[i]
i
はindexで、0
は実行されているpythonのファイル名を与えます。それ以降のインデックスは、渡された引数です。
あなたがこれをこのように呼ぶなら:$ python myfile.py var1 var2 var3
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
配列と同様に、常に現在の作業ディレクトリであるsys.argv[0]
もあります。
私が考えることができるいくつかの追加のもの。
@allsyedが言ったようにsys.argvはコンポーネントのリスト(プログラム名を含む)を与えるので、あなたがコマンドラインを通して渡された要素の数を知りたいのならそれを決定するためにlen()を使うことができます。これに基づいて、ユーザーが特定の数のパラメーターを渡さなかった場合は、例外/エラーメッセージを設計できます。
また、コマンドライン引数を処理するためのより良い方法を探しているなら、 https://docs.python.org/2/howto/argparse.html