Python3 コマンドライン引数
Python はgetoptコマンドライン引数を取得するためのモジュールを提供します。
$ python test.py arg1 arg2 arg3
Python では、次を使用することもできますsysのsys.argvコマンドライン引数を取得する:
sys.argvはコマンドライン引数のリストです。
len(sys.argv)コマンドライン引数の数を計算します。
注:sys.argv[0]はスクリプト名を表します。
例
test.py ファイルのコードは次のとおりです:
例
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 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 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 ファイルのコードは次のとおりです:
例
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 基本構文