Python3 コマンドライン引数

Python3 基础语法Python3 基本構文

Python はgetoptコマンドライン引数を取得するためのモジュールを提供します。

$ python test.py arg1 arg2 arg3

Python では、次を使用することもできますsysのsys.argvコマンドライン引数を取得する:

  • sys.argvはコマンドライン引数のリストです。

  • len(sys.argv)コマンドライン引数の数を計算します。

注:sys.argv[0]はスクリプト名を表します。

例

test.py ファイルのコードは次のとおりです:

例

#!/usr/bin/python3

import sys

print ('引数の数は:', len(sys.argv), '个参数。')
print ('参数列表:', str(sys.argv))
print ('脚本名:', str(sys.argv[0]))

上記のコードを実行すると、出力結果は次のとおりです:

$ python3 test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
脚本名: test.py

getopt モジュール

getopt モジュールは、コマンドライン引数を専門に処理するモジュールで、コマンドラインオプションと引数を取得するために使用されます。つまり、sys.argvコマンドラインオプションにより、プログラムのパラメータがより柔軟になります。短いオプション形式-と長いオプション形式--。

このモジュールは、コマンドライン引数を解析するための2つのメソッドと1つの例外処理を提供します。

getopt.getopt メソッド

getopt.getopt メソッドはコマンドライン引数リストを解析するために使用され、構文形式は次のとおりです:

getopt.getopt(args, options[, long_options])

メソッドの引数の説明:

  • args: 解析するコマンドライン引数リスト。

  • options: 文字列の形式で定義します。optionsの後のコロンは:そのオプションに追加のパラメータが必要であることを示し、コロンがない場合は追加のパラメータがないことを示します。

  • long_options: リストの形式で定義します。long_optionsの後の等号は=そのオプションが設定されている場合、追加のパラメータが必要であり、そうでない場合はパラメータが追加されないことを示します。

このメソッドの戻り値は2つの要素で構成されます: 1つ目は(option, value)タプルのリストです。2つ目は、パラメータリストで、次のものを含まない- 或 --パラメータ。

次に、site() 関数を定義し、コマンドラインからサイト名を入力します。nameとURLurl、省略形を使用できます。nとu:

例

import sys
import getopt
 
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:")  # 短いオプション形式
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n']:
            name = arg
        elif opt in ['-u']:
            url = arg
     
 
    print( name +" " + url)
 
site()

上記のコードをテストするには、コマンドラインで次のように入力します:

python3 test.py -n サンプル -u www.example.com

出力結果は次のとおりです:

サンプル www.example.com

以下の例は、長いオプション形式の使用法を示しています:

例

import sys
import getopt
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:",  
                                   ["name=",
                                    "url="])  # 長いオプション形式
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n', '--name']:
            name = arg
        elif opt in ['-u', '--url']:
            url = arg
     
 
    print( name + " " + url)
 
site()

上記のコードをテストするには、コマンドラインで次のように入力します:

python3 test.py -n サンプル -u www.example.com

出力結果は次のとおりです:

サンプル www.example.com

もう1つのメソッドは getopt.gnu_getopt ですが、使用されることは少ないため、ここでは詳しく説明しません。


Exception getopt.GetoptError

パラメータリストが見つからない場合、またはオプションに必要なパラメータが空の場合に、この例外が発生します。

例外のパラメータはエラーの理由を示す文字列です。属性msgとoptは関連するオプションのエラー情報です。

例

次のようなスクリプトを作成するとします。コマンドラインからスクリプトファイルに2つのファイル名を渡すことができ、別のオプションを使用してスクリプトの使用方法を確認できます。スクリプトの使用方法は次のとおりです:

usage: test.py -i <inputfile> -o <outputfile>

test.py ファイルのコードは次のとおりです:

例

#!/usr/bin/python3

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"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 ('test.py -i <inputfile> -o <outputfile>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('入力ファイルは:', inputfile)
   print ('出力ファイルは:', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

上記のコードを実行すると、出力結果は次のとおりです:

$ python3 test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ python3 test.py -i inputfile -o outputfile
输入的文件为: inputfile
输出的文件为: outputfile

Python3 基础语法Python3 基本構文

その他の拡張