1. 程式人生 > >python命令列解析argparse模組

python命令列解析argparse模組

主要是比較理解兩個函式: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’]

綜上,兩個函式效果差不多,就是未定義引數上的一點區別