Pythonでの引数の解析
すべてのプログラミング言語には、スクリプトを作成して端末から実行したり、他のプログラムから呼び出されたりする機能があります。このようなスクリプトを実行する場合、スクリプト内でさまざまな関数を実行するために、スクリプトに必要な引数を渡す必要があることがよくあります。この記事では、Pythonスクリプトに引数を渡すさまざまな方法を説明します。
sys.argvの使用
これは組み込みモジュールです。sys.argvは、スクリプトで渡される引数を処理できます。デフォルトでは、sys.argv[0]で考慮される最初の引数はファイル名です。残りの引数には、1、2などのインデックスが付けられます。次の例では、スクリプトが渡された引数をどのように使用するかを示しています。
import sys print(sys.argv[0]) print("Hello ",sys.argv[1],", welcome!")
以下の手順を実行して上記のスクリプトを実行すると、次の結果が得られます。
上記のコードを実行するには、ターミナルウィンドウに移動し、以下に示すコマンドを記述します。ここで、スクリプトの名前はargs_demo.pyです。このスクリプトに値Samanthaの引数を渡します。
D:\Pythons\py3projects>python3 args_demo.py Samantha args_demo.py Hello Samantha welcome!
getoptの使用
これは、前のアプローチと比較してより柔軟性のある別のアプローチです。ここで、引数の値を収集し、エラー処理と例外とともにそれらを処理できます。以下のプログラムでは、引数を取り、ファイル名である最初の引数をスキップすることにより、2つの数値の積を求めています。もちろん、sysモジュールもここで使用されます。
例
import getopt import sys # Remove the first argument( the filename) all_args = sys.argv[1:] prod = 1 try: # Gather the arguments opts, arg = getopt.getopt(all_args, 'x:y:') # Should have exactly two options if len(opts) != 2: print ('usage: args_demo.py -x <first_value> -b <second_value>') else: # Iterate over the options and values for opt, arg_val in opts: prod *= int(arg_val) print('Product of the two numbers is {}'.format(prod)) except getopt.GetoptError: print ('usage: args_demo.py -a <first_value> -b <second_value>') sys.exit(2)
出力
上記のコードを実行すると、次の結果が得られます-
D:\Pythons\py3projects >python3 args_demo.py -x 3 -y 12 Product of the two numbers is 36 # Next Run D:\Pythons\py3projects >python3 args_demo.py usage: args_demo.py -x <first_value> -b <second_value>
argparseの使用
エラーと例外は追加のコード行を必要とせずにモジュール自体によって処理されるため、これは実際には引数の受け渡しを処理するための最も好ましいモジュールです。使用するすべての引数に必要な名前ヘルプテキストに言及してから、コードの他の部分で引数の名前を使用する必要があります。
例
import argparse # Construct an argument parser all_args = argparse.ArgumentParser() # Add arguments to the parser all_args.add_argument("-x", "--Value1", required=True, help="first Value") all_args.add_argument("-y", "--Value2", required=True, help="second Value") args = vars(all_args.parse_args()) # Find the product print("Product is {}".format(int(args['Value1']) * int(args['Value2'])))
出力
上記のコードを実行すると、次の結果が得られます-
D:\Pythons\py3projects>python3 args_demo.py -x 3 -y 21 Product is 63 # Next Run D:\Pythons\py3projects>python3 args_demo.py -x 3 -y usage: args_demo.py [-h] -x VALUE1 -y VALUE2 args_demo.py: error: argument -y/--Value2: expected one argument
-
PythonでのXML解析?
Python XMLパーサーパーサーは、XMLファイルから有用な情報を読み取って抽出する最も簡単な方法の1つを提供します。この短いチュートリアルでは、Python ElementTree XML APIを使用してXMLファイルを解析し、XMLドキュメントを変更および作成する方法を説明します。 Python ElementTree APIは、XMLデータを抽出、解析、変換する最も簡単な方法の1つです。 それでは、ElementTreeを使用してPythonXMLパーサーの使用を開始しましょう。 例1 XMLファイルの作成 まず、要素とサブ要素を含む新しいXMLファイルを作成します。 #Im
-
Python関数を関数の引数として渡す方法は?
Pythonは、最初のパラメーターが関数である次のメソッドを実装します- map(function、iterable、...)-iterableのすべてのアイテムに関数を適用し、結果のリストを返します。 関数を引数として渡すことができるカスタム関数を作成することもできます。 指定されたコードを書き直して、mapメソッドを使用して関数sqr(x)を関数の引数として渡します。 例 s = [1, 3, 5, 7, 9] def sqr(x): return x ** 2 print(map(sqr, s)) We can as well use lambda function to get s