web-dev-qa-db-ja.com

Pythonでコマンドライン引数にアクセスするにはどうすればいいですか?

私は自分のプロジェクト設定のセットアップを作成するためにpythonを使用しますが、コマンドライン引数を取得するのに助けが必要です。

私は端末でこれを試してみました:

$python myfile.py var1 var2 var3

私のPythonファイルでは、入力されているすべての変数を使いたいのです。

285

Pythonのチュートリアルで説明されています

import sys

print(sys.argv)

具体的には、python example.py one two threeを実行したとします。

>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']
393
SilentGhost
import sys

sys.argv[1:]

引数のリストを表示します(pythonファイルの名前は含みません)

90
Ryan Mentley

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
64
Michael Dorner

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 
45
Charles P.

引数をリストとして取得するためにsys.argvを使うことができます。

個々の要素にアクセスする必要がある場合は、

sys.argv[i]  

iはindexで、0は実行されているpythonのファイル名を与えます。それ以降のインデックスは、渡された引数です。

21
allsyed

あなたがこれをこのように呼ぶなら:$ python myfile.py var1 var2 var3

import sys

var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]

配列と同様に、常に現在の作業ディレクトリであるsys.argv[0]もあります。

6
lvadim01

私が考えることができるいくつかの追加のもの。

@allsyedが言ったようにsys.argvはコンポーネントのリスト(プログラム名を含む)を与えるので、あなたがコマンドラインを通して渡された要素の数を知りたいのならそれを決定するためにlen()を使うことができます。これに基づいて、ユーザーが特定の数のパラメーターを渡さなかった場合は、例外/エラーメッセージを設計できます。

また、コマンドライン引数を処理するためのより良い方法を探しているなら、 https://docs.python.org/2/howto/argparse.html

4
Rohan Sadale