ホームページ  >  記事  >  バックエンド開発  >  Pythonでコマンドラインパラメータを取得する方法のまとめ

Pythonでコマンドラインパラメータを取得する方法のまとめ

高洛峰
高洛峰オリジナル
2017-03-08 10:09:052724ブラウズ

コマンドラインパラメータを取得する 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:])

実行結果は次のとおりです:

Pythonでコマンドラインパラメータを取得する方法のまとめ

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でコマンドラインパラメータを取得する方法のまとめ

python test_argparse.py --port 80

Pythonでコマンドラインパラメータを取得する方法のまとめ

python test_argparse.py --port 80 --フラグAPK

Pythonでコマンドラインパラメータを取得する方法のまとめ

python test_argparse.py -- ポート 80 -l

Pythonでコマンドラインパラメータを取得する方法のまとめ

コマンドラインパラメータを取得するためのその他の Python メソッドと関連記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。