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

迷茫
リリース: 2017-03-25 17:11:53
オリジナル
1334 人が閲覧しました

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

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 コードは次のとおりです:

#encoding=utf-8
import argparse

def main(args):
    print("--address {0}".format(args.code_address))    #args.address会报错,因为指定了dest的值
    print("--flag {0}".format(args.flag))   #如果命令行中该参数输入的值不在choices列表中,则报错
    print("--port {0}".format(args.port))   #prot的类型为int类型,如果命令行中没有输入该选项则报错
    print("-l {0}".format(args.log))  #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问

if __name__ == '__main__':
    parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")
    parser.add_argument("--address", default=80, help="the port number.", dest="code_address")
    parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type")
    parser.add_argument("--port", type=int, required=True, help="the port number.")
    parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.")

    args = parser.parse_args()
    main(args)
ログイン後にコピー

次のコマンドをそれぞれ実行します:

python test_argparse.py

python test_argparse.py --port 80

python test_argparse.py --port 80 --flag apk

Python test_argparse。 py --port 80 -l

以上がPythonでコマンドラインパラメータを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート