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

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


Pythonのsysモジュールは、sys.argvを介してコマンドライン引数へのアクセスを提供します。 sys.argvはコマンドライン引数のリストであり、sys.argv[0]はプログラムです。スクリプト名。

次のコードをargs.pyとして保存します

import sys
print ('argument list', sys.argv)

次のようにコマンドラインから上記のスクリプトを実行します。

C:\python37>python args.py 11 22
argument list ['args.py', '11', '22']

getoptモジュールには、sys.argvのコマンドライン引数を解析する機能があります。 Unixのgetopt()関数と同じ規則をサポートします(「-」および「-」の形式の引数の特別な意味を含みます)。

APIは、C getopt()関数のユーザーに馴染みのあるものになるように設計されています。

getopt(args、shortopts、longopts =[])

コマンドラインオプションとパラメータリストを解析します。 argsは、実行中のプログラムへの主要な参照であるsys.argv[0]を除く引数リストです。通常、これはsys.argv [1:]を意味します。この関数の引数は次のとおりです-

shortopts: スクリプトによって認識されるオプション文字の文字列です。引数が必要なオプションの後にはコロンが続きます(':';つまり、Unix getopt()が使用するのと同じ形式)。

Longopts: 指定する場合は、サポートする必要のある長いオプションの名前を含む文字列のリストである必要があります。先頭の「-」文字をオプション名に含めないでください。引数が必要な長いオプションの後には、等号('=')を付ける必要があります。

戻り値は2つの要素で構成されます。1つ目は(オプション、値)のペアのリストです。 2つ目は、オプションリストが削除された後に残ったプログラム引数のリストです(これは引数の末尾のスライスです)。返される各オプションと値のペアには、最初の要素としてオプションがあり、短いオプションの場合はハイフン('-x'など)、長いオプションの場合は2つのハイフン('--long-option'など)が前に付けられます。 2番目の要素としてのoption引数、またはオプションに引数がない場合は空の文字列。オプションは、リスト内で見つかったのと同じ順序で出現するため、複数回出現する可能性があります。長いオプションと短いオプションが混在する場合があります。

GetoptErrorは、引数リストに認識されないオプションが見つかった場合、または引数を必要とするオプションが指定されていない場合に発生します。

import sys, getopt

args=sys.argv[1:]
inputfile = ''
outputfile = ''
try:
   opts, args = getopt.getopt(args,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
   print ('test.py -i <inputfile> -o <outputfile>')
   sys.exit(2)
for opt, arg in opts:
   if opt == '-h':
      print ('args.py -i <inputfile> -o <outputfile>')
      sys.exit()
   elif opt in ("-i", "--ifile"):
      inputfile = arg
   elif opt in ("-o", "--ofile"):
      outputfile = arg
print ('Input file is "', inputfile)
print ('Output file is "', outputfile)

出力

C:\python37>python args.py -h
args.py -i <inputfile> -o <outputfile>
C:\python37>python args.py -i abc.txt -o xyz.txt
Input file is " abc.txt
Output file is " xyz.txt
C:\python37>python args.py --ifile=abc.txt --ofile=xyz.txt
Input file is " abc.txt
Output file is " xyz.txt

  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