Pythonのコマンドラインパラメータ解析
4545 ワード
作者:Tyan博客:noahsnail.com | CSDN |
コマンドラインパラメータ解析はプログラミング言語で基本的に遭遇し、Pythonにはコマンド項目オプションとパラメータ解析のためのモジュール
1. sys.argv
Pythonのコマンドラインパラメータを解析する最も伝統的な方法は
テスト結果は次のとおりです.
この方法は比較的古く,柔軟性が劣り,同時に解析したパラメータは
2. argparse
テスト結果は次のとおりです. 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) 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
コマンドラインパラメータ解析はプログラミング言語で基本的に遭遇し、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
クラス作成時のパラメータは次のとおりです.add_argument
関数のパラメータは次のとおりです.参考資料: