Python
 Computer >> コンピューター >  >> プログラミング >> Python

コマンドラインオプション用のPythonパーサー


コマンドラインから実行するときに、Pythonスクリプトに引数を渡す必要があることがよくあります。ただし、必要なパラメーターが同じ数、タイプ、または順序で提供されていない場合、スクリプトは例外を発生させます。ここで、コマンドライン引数を適切に解析する必要があります。

argparse モジュールは、非常に使いやすいコマンドラインインターフェイスを作成するためのツールを提供します。 sys.argvリストに収集された引数を解析する方法を処理し、ヘルプを自動的に生成し、無効なオプションが指定された場合にエラーメッセージを発行します。

コマンドラインインターフェイスを設計するための最初のステップは、パーサーオブジェクトを設定することです。これはArgumentParser()によって実行されます argparseモジュールの関数。関数には、説明パラメーターとして説明文字列を指定できます。

まず、スクリプトは引数なしでコマンドラインから実行されます。引き続きparse_args()を使用します パーサーオブジェクトのメソッド。引数が指定されていないため、何も実行されません。

import argparse
parser = argparse.ArgumentParser(description="sample argument parser")
args=parser.parse_args()

上記のスクリプトを実行すると

C:\python36>python argparser1.py
C:\python36>python argparser1.py --help
usage: argparser1.py [-h]
sample argument parser
optional arguments:
-h, --help show this help message and exit

2番目のコマンドラインの使用法は、示されているようにヘルプメッセージを生成する–helpオプションを提供します。 –helpパラメーターはデフォルトで使用可能です。

次に、スクリプトの実行に必須の引数を定義します。指定されていない場合、スクリプトはエラーをスローします。ここでは、 add_argument()によって引数「user」を定義します。 メソッド。

import argparse
parser=argparse.ArgumentParser(description="sample argument parser")
parser.add_argument("user")
args = parser.parse_args()
if args.user=="Admin":
print ("Hello Admin")
else:
print ("Hello Guest")

このスクリプトのヘルプには、「ユーザー」の形式で1つの位置引数が表示されるようになりました。プログラムは、その値が「管理者」であるかどうかを確認し、対応するメッセージを出力します。

C:\python36>python argparser1.py --help
usage: argparser1.py [-h] user
sample argument parser
positional arguments:
user
optional arguments:
-h, --help show this help message and exit
C:\python36>python argparser1.py Admin
Hello Admin
C:\python36>python argparser1.py temp
Hello Guest

デフォルトを割り当てることができます add_argument()メソッドの引数の値。

import argparse
parser=argparse.ArgumentParser(description="sample argument parser")
parser.add_argument("user", nargs='?',default="Admin")
args=parser.parse_args()
if args.user=="Admin":
print ("Hello Admin")
else:
print ("Hello Guest")

ここでnargs 消費する必要のあるコマンドライン引数の数です。 '?'。可能であれば、1つの引数がコマンドラインから消費され、単一のアイテムとして生成されます。コマンドライン引数が存在しない場合、デフォルトの値が生成されます。

C:\python36>python argparser1.py
Hello Admin
C:\python36>python argparser1.py Admin
Hello Admin
C:\python36>python argparser1.py test
Hello Guest

デフォルトでは、すべての引数は文字列として扱われます。 タイプについて明示的に言及する 引数の場合は、add_argument()メソッドでtypeパラメーターを使用します。すべてのPythonデータ型はtypeの有効な値です。

import argparse
parser=argparse.ArgumentParser(description="add numbers")
parser.add_argument("first", type=int)
parser.add_argument("second", type=int)
args = parser.parse_args()
x = args.first
y = args.second
z = x+y
print ('addition of {} and {} = {}'.format(x,y,z))
C:\python36>python argparser2.py 2 3
addition of 2 and 3 = 5

上記の例では、引数は必須です。オプションの引数を追加するには、名前の前に二重ダッシュ-を付けます。次の場合、surname引数は接頭辞が二重ダッシュ(--surname)であるため、オプションです

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("name")
parser.add_argument("--surname")
args = parser.parse_args()
print ("My name is ", args.name, end=' ')
if args.surname:
print (args.surname)

単一のダッシュで始まる引数の1文字の名前は、短い名前のオプションとして機能します。

C:\python36>python argparser3.py Malhar
My name is Malhar
C:\python36>python argparser3.py Malhar --surname Lathkar
My name is Malhar Lathkar
parser.add_argument("-s","--surname")
>

引数が定義されたリストからのみ値をとる必要がある場合は、choicesパラメーターとして定義されます。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("sub", choices=['Physics', 'Maths', 'Biology'])
args=parser.parse_args()
print ("My subject is ", args.sub)

パラメータの値がリストにない場合は、無効な選択エラーが表示されることに注意してください。

C:\python36>python argparser4.py Physics
My subject is Physics
C:\python36>python argparser4.py English
usage: argparser4.py [-h] {Physics,Maths,Biology}
argparser4.py: error: argument sub: invalid choice: 'English' (choose from 'Physics', 'Maths', 'Biology')

  1. コマンドラインを介したPythonMatplotlibによるインタラクティブなプロット

    インタラクティブなプロットを取得するには、フィギュアをアクティブにする必要があります。 plt.ioff()の使用 およびplt.ion() 、プロットを使用してインタラクティブなアクションを実行できます。 Ipythonを開きます シェルを選択し、シェルで次のコマンドを入力します。 例 In [1]: %matplotlib auto Using matplotlib backend: GTK3Agg In [2]: import matplotlib.pyplot as In [3]: fig, ax = plt.subplots() # Diagram will pop up.

  2. PythonでTkinterボタンのコマンドメソッドを変更する

    Buttonウィジェットの重要性は、アプリケーションで特定の操作を実行するためのイベントを処理するために使用されることです。このようなイベントを処理するために、通常、特定の操作を含むメソッドを定義します。 イベントを変更したいとします。 ボタンを初期化した後のメソッド。 configure(options)を使用して、ボタンとそのハンドラーを構成できます。 方法。したがって、新しいメソッドを定義してボタンを構成することで、同じボタンで新しいイベントをトリガーできます。 例 #Import tkinter library from tkinter import * #Create an i