Latest web development tutorials

Pythonのコマンドライン引数

Pythonのコマンドライン引数

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

$ python test.py arg1 arg2 arg3

Pythonはまた、コマンドライン引数を取得するためのsyssys.argvのに使用することができます。

  • sys.argvのは、コマンドラインパラメータのリストです。

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

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

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つのメソッドを提供し、例外ハンドラは、コマンドライン引数を解析します。

getopt.getopt方法

次のようにコマンドラインパラメータリストの構文を解析するためのはgetopt.getopt方法は次のとおりです。

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

メソッドパラメータ:

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

  • オプション:書式文字列を定義するには、後のコロンのオプションはコロン(:)は、このオプションが追加パラメータではないことを示すことなく、このオプションは、追加のパラメータを持っている必要があることを示します。

  • long_options: リストのフォーマットを定義し等号(=)の後long_optionsは、このオプションが設定されている場合は、追加のパラメータ、または追加されないパラメータが存在しなければならないと述べました。

  • この方法は、2つの要素で構成された値を返します。最初は(オプション、値)タプルです。 ' - 'または ' - 'パラメータを第二には、そうでないものを含め、パラメータのリストです。

もう一つの方法は、ここで説明しないことがたくさん、getopt.gnu_getoptではありません。


例外getopt.GetoptError

パラメータのリストの中、またはオプション所望のパラメータは、例外が空でトリガされていません。

例外引数はエラーを表す文字列です。 エラーメッセージに関連するオプションおよびmsg属性を選びます

我々はスクリプトを表示するには、別のオプションを使用しているときは、スクリプトファイルのファイル名コマンドに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