Pythonのコマンドラインパラメータ解析

4545 ワード

作者:Tyan博客:noahsnail.com  |  CSDN  | 
コマンドラインパラメータ解析はプログラミング言語で基本的に遭遇し、Pythonにはコマンド項目オプションとパラメータ解析のためのモジュールargparseが内蔵されている.次に、Pythonコマンドラインパラメータを解析する方法を2つ紹介します.
1. sys.argv
Pythonのコマンドラインパラメータを解析する最も伝統的な方法はsys.argvを通過することである.Demoは以下の通りです.
#!/usr/env/python python
# _*_ coding: utf-8 _*_

import sys

param1 = sys.argv[1]
param2 = sys.argv[2]

print sys.argv
print param1
print param2
print type(param1)
print type(param2)

テスト結果は次のとおりです.
$ python test.py 1 2
['test.py', '1', '2']
1
2

この方法は比較的古く,柔軟性が劣り,同時に解析したパラメータはstr型であった.ただし、単純なスクリプトを作成する場合は、パラメータが少なく、固定されている場合が便利です.
2. argparse argparseモジュールはPythonに内蔵されたパラメータ解析モジュールで、使いやすく機能的です.Demoは以下の通りです.
#!/usr/env/python python
# _*_ coding: utf-8 _*_

import argparse

# Create ArgumentParser() object
parser = argparse.ArgumentParser()

# Add argument
parser.add_argument('--train', required=True, help='path to dataset')
parser.add_argument('--val', required=True, help='path to dataset')
parser.add_argument('--total', type=int, help='number of dataset', default=100)
parser.add_argument('--lr', type=float, default=0.01, help='learning rate')

# Print usage
parser.print_help()

# Parse argument
args = parser.parse_args()

# Print args
print args

print args.train
print type(args.train)
print args.val
print type(args.val)
print args.total
print type(args.total)
print args.lr
print type(args.lr)

テスト結果は次のとおりです.
# Test 1
python test.py --train train_lmdb --val val_lmdb --total 10000 --lr 0.001
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]

optional arguments:
  -h, --help     show this help message and exit
  --train TRAIN  path to dataset
  --val VAL      path to dataset
  --total TOTAL  number of dataset
  --lr LR        learning rate
Namespace(lr=0.001, total=10000, train='train_lmdb', val='val_lmdb')
train_lmdb

val_lmdb

10000

0.001


# Test 2
python test.py --train train_lmdb --val val_lmdb
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]

optional arguments:
  -h, --help     show this help message and exit
  --train TRAIN  path to dataset
  --val VAL      path to dataset
  --total TOTAL  number of dataset
  --lr LR        learning rate
Namespace(lr=0.01, total=100, train='train_lmdb', val='val_lmdb')
train_lmdb

val_lmdb

100

0.01



# Test 3
python test.py --val val_lmdb --train train_lmdb
usage: test.py [-h] --train TRAIN --val VAL [--total TOTAL] [--lr LR]

optional arguments:
  -h, --help     show this help message and exit
  --train TRAIN  path to dataset
  --val VAL      path to dataset
  --total TOTAL  number of dataset
  --lr LR        learning rate
Namespace(lr=0.01, total=100, train='train_lmdb', val='val_lmdb')
train_lmdb

val_lmdb

100

0.01

ArgumentParserクラス作成時のパラメータは次のとおりです.
  • prog-プログラムの名前(デフォルト:sys.argv[0])
  • usage-プログラムの使用方法を記述する文字列(デフォルト:解析器のパラメータから生成)
  • description-パラメータヘルプ情報の前のテキスト(デフォルト:空)
  • epilog-パラメータヘルプ情報の後のテキスト(デフォルト:空)
  • parents-ArgumentParserオブジェクトのリストです.これらのオブジェクトのパラメータは
  • に含める必要があります.
  • formatter_class-カスタマイズヘルプ情報のクラス
  • prefix_chars-オプションパラメータの接頭辞文字セット(デフォルト:'-')
  • fromfile_prefix_chars-追加のパラメータで読み込むファイルのプレフィックス文字セット(デフォルト:None)
  • argument_default-パラメータのグローバルデフォルト(デフォルト:None)
  • conflict_handler-競合を解決するオプションパラメータのポリシー(通常は必要ありません)
  • add_help-解析器に-h/–helpオプションを追加(デフォルト:True)
  • add_argument関数のパラメータは次のとおりです.
  • name or flags-オプション文字列の名前またはリスト、例えばfooまたは-f、--foo.
  • action-コマンドラインがこのパラメータに遭遇したときに実行される基本動作タイプ.
  • nargs-読み込むべきコマンドラインパラメータの数.
  • const-いくつかのactionおよびnargsオプションで要求される定数値.
  • default-コマンドラインにパラメータが表示されない場合のデフォルト値.
  • type-コマンドラインパラメータを変換するタイプ.
  • choices-パラメータが許容できる値のコンテナ.
  • required-コマンドラインオプションを省略できますか(オプションのパラメータのみ).
  • helpパラメータの簡単な説明.
  • metavar-ヘルプ情報のパラメータの名前.
  • dest-parse_へargs()が返すオブジェクトに追加するプロパティ名.

  • 参考資料:
  • http://python.usyiyi.cn/translate/python_278/library/argparse.html
  • http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html