Python コマンドライン引数

Python 基础语法Python 基本構文

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

$ python test.py arg1 arg2 arg3

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

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

  • len(sys.argv) はコマンドライン引数の個数です。

注:sys.argv

例

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

例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys

print '引数の数は:', len(sys.argv), '个参数。'
print '参数列表:', str(sys.argv)

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

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

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つ目は、パラメータリストであり、持たないものを含みます。- 或 --のパラメータです。

もう1つのメソッドは getopt.gnu_getopt ですが、ここでは詳しく説明しません。


Exception getopt.GetoptError

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

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

例

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

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

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

例

#!/usr/bin/python
# -*- coding: UTF-8 -*-

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:])

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

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

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

Python 基础语法Python 基本構文

その他の拡張