python命令列解析argparse模組
阿新 • • 發佈:2019-01-08
主要是比較理解兩個函式:parse_args()和parse_known_args()
① parse_args()
import argparse
import sys
parse = argparse.ArgumentParser()
parse.add_argument("--learning_rate", type=float, default=0.01,
help="initial learining rate")
parse.add_argument("--max_steps", type=int, default =2000, help="max train number")
parse.add_argument("--layer_unit", type=int, default=128, help="layer units")
arg = parse.parse_args(sys.argv[1:]) #argv[1:]是命令列輸入的所有引數
print(arg)
print(arg.learning_rate, arg.max_steps, arg.layer_unit)
命令列執行:
$ python3 test.py --max_steps=100
結果:
Namespace(layer_unit=128, learning_rate=0.01, max_steps=100)
0.01 100 128
命令列執行:
$ python3 test.py --max_steps=100 --add_para=20
結果:
usage: test.py [-h] [–learning_rate LEARNING_RATE]
[–max_steps MAX_STEPS] [–layer_unit LAYER_UNIT]
test.py: error: unrecognized arguments: –add_para=20
② parse_known_args()
flags, unparsed = parse.parse_known_args(sys.argv[1:]) # 返回兩個部分
print(flags)
print(flags.learning_rate, flags.max_steps, flags.layer_unit)
print(unparsed)
命令列執行:
$ python3 test.py --max_steps=100
結果:
Namespace(layer_unit=100, learning_rate=0.01, max_steps=100)
0.01 100 128
[]
命令列執行:
$ python3 test.py --max_steps=100 --add_para=20
結果:
Namespace(layer_unit=100, learning_rate=0.01, max_steps=100)
0.01 100 128
[‘–add_para’, ‘20’]
綜上,兩個函式效果差不多,就是未定義引數上的一點區別