コマンドラインパラメータを取得する Python のメソッド、getopt モジュールと argparse モジュールを紹介します。
Pythonバージョン: 2.7
1. getoptモジュール
主にモジュール内の関数を使用します:
options, args = getopt.getopt(args, shortopts, longopts=[])
パラメータargs: 通常はsys。 [1:]。 sys.argv[0] をフィルターで除外します。これは、実行されたスクリプトの名前であり、コマンド ライン パラメーターとしてカウントされません。
パラメータ shortopts: 短い形式の分析文字列。たとえば、「hp:i:」の場合、h の後にコロンがない場合はパラメータがないことを意味し、p と i の後にコロンがある場合はパラメータがあることを意味します。
パラメータlongopts: 長い形式の分析文字列リスト。例: ["help", "ip=", "port="]。help の後に等号はありません。これはパラメーターがないことを意味します。ip と port の後にコロンがあることは、パラメーターがあることを意味します。
戻り値のオプションは、要素としてタプルを含むリストです。各タプルの形式は次のとおりです: (オプション文字列、追加パラメータ) (例: ('-i', '192.168.0.1'))
戻り値の引数。 is '-' または '--' を含まないパラメータを要素とするリスト。
コマンドラインで次のコマンドを実行します:
python test_getopt.py -i 192.168.0.1 -p 80 123 a
または
python test_getopt.py -ip=192.168.0.1 --port=80 123
test_getopt.py コードは次のとおりです:
#encoding=utf-8 import getopt import sys def main(argv): try: options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError: sys.exit() for option, value in options: if option in ("-h", "--help"): print("help") if option in ("-i", "--ip"): print("ip is: {0}".format(value)) if option in ("-p", "--port"): print("port is: {0}".format(value)) print("error args: {0}".format(args)) if __name__ == '__main__': main(sys.argv[1:])
実行結果は次のとおりです:
2. argparse モジュール
コマンド ライン オプションとパラメーターを解析するために使用される標準モジュール。
使用手順:
1: import argparse #モジュールをインポート
2: parser = argparse.ArgumentParser() #解析オブジェクトを作成する
3: parser.add_argument() #オブジェクトに使用するコマンドラインオプションを追加パラメータ
4: parser.parser_args() #コマンドラインを解析する
それでは、ArgumentParserとadd_argumentメソッドを詳しく紹介しましょう:
ArgumentParser(prog=None, use=None, description=None,eplog=None, parents =[]、formatter_class=argparser.HelpFormatter、prefix_chars='-'、fromfile_prefix_chars=None、argument_default=None、conflict_handler='error'、add_help=True)
プログラムの実行時には、パラメータにはデフォルト値が設定されます。パラメータが正しくない場合、または parser.print_help() メソッドが呼び出されたときに、これらの説明が出力されます。通常、渡す必要があるのはパラメータの説明のみです。
add_argument(名前またはフラグ... [, アクション] [, nargs] [, const] [, デフォルト] [, タイプ] [, 選択肢] [, 必須] [, ヘルプ] [, メタ変数] [, dest] )
共通パラメータは次のように説明されます:
name または flags: -p、--port などのコマンドラインパラメータ名またはオプション
action:
Store: デフォルトのアクションモード、値を指定された変数
store_const: ストレージ値はパラメーターの const 部分で指定され、非ブール値のコマンド ライン フラグを実装するためによく使用されます
store_true/store_false: ブール値のスイッチ。 store_true のデフォルト値は False です。コマンド ラインにブール スイッチを入力すると、値は True になります。 store_falseの逆です
Append:値をリストに格納します、このパラメータは再利用可能です
Append_const:値をリストに格納します、格納された値はパラメータのconst部分で指定されます
Count:数をカウントします統計パラメータの入力の省略形
Version: バージョン情報を出力し、スクリプトを終了します
nargs: コマンドラインパラメータの数。通常はワイルドカードで表されます: ? 1 つだけを意味し、* は 0 からそれ以上を意味し、+ は 1 からそれ以上を意味します
default: デフォルト値
type: パラメーターの型、デフォルトは文字列型、float、int、Boolean 型にすることもできます
choices : 範囲入力値の数
required: デフォルトは False ですが、True の場合、パラメータを入力する必要があることを意味します
help: 使用されるヘルプ プロンプト情報
dest: プログラム内のパラメータに対応する変数名例: add_argument(" -a", dest="code_name")。スクリプト内で parser.code_name を使用してコマンド ライン オプションの値にアクセスします
サンプル スクリプト test_argparse.py コードは次のとおりです:
1 #encoding=utf-8 2 import argparse 3 4 def main(args): 5 print("--address {0}".format(args.code_address)) #args.address会报错,因为指定了dest的值 6 print("--flag {0}".format(args.flag)) #如果命令行中该参数输入的值不在choices列表中,则报错 7 print("--port {0}".format(args.port)) #prot的类型为int类型,如果命令行中没有输入该选项则报错 8 print("-l {0}".format(args.log)) #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问 9 10 if __name__ == '__main__':11 parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")12 parser.add_argument("--address", default=80, help="the port number.", dest="code_address")13 parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")14 parser.add_argument("--port", type=int, required=True, help="the port number.")15 parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")16 17 args = parser.parse_args()18 main(args)
次のコマンドをそれぞれ実行します:
python test_argparse.py
python test_argparse.py --port 80
python test_argparse.py --port 80 --フラグAPK
python test_argparse.py -- ポート 80 -l
コマンドラインパラメータを取得するためのその他の Python メソッドと関連記事については、PHP 中国語 Web サイトに注目してください。