Python中的argparse模块
生活随笔
收集整理的這篇文章主要介紹了
Python中的argparse模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介
argparse是python用于解析命令行參數和選項的標準模塊,用于代替已經過時的optparse模塊。argparse模塊的作用是用于解析命令行參數.
如果你想詳細的了解它的功能.建議閱讀這個,或者這個
本篇文章只對其基本功能進行介紹,并對TensorFlow的examples中argarse使用進行詳細的介紹
功能
原本的功能是命令行解析模塊
使用argparse的第一步就是創建一個解析器對象,并告訴它將會有些什么參數。那么當你的程序運行時,該解析器就可以用于處理命令行參數。
解析器類是 ArgumentParser 。構造方法接收幾個參數來設置用于程序幫助文本的描述信息以及其他全局的行為或設置。
import argparse parser = argparse.ArgumentParser() """def __init__(self,prog=None,usage=None,description=None,epilog=None,parents=[],formatter_class=HelpFormatter,prefix_chars='-',fromfile_prefix_chars=None,argument_default=None,conflict_handler='error',add_help=True,allow_abbrev=True): """"parser.add_argument() 添加參數
這個方法是用來添加參數的方法,下面是一個示例
parser.add_argument('--hidden2',type=int,default=32,help='Number of units in hidden layer 2.')其中help是默認參數,你可以在構造parser 時選擇其是否存在,在實際使用中 可以使用 -h 或者 –help調用該參數
第一個參數是字符串,也就是這個參數的名字,之后的參數(除help)都是以**kwargs傳入的
之后**kwargs 還有其他參數會被解析,其中type為參數數據類型,default為參數默認值,其他參數請參考argparse的源碼
parser.parse_known_args() 獲取已知參數
TensorFlow中的實例
FLAGS, unparsed = parser.parse_known_args() print(FLAGS, unparsed) print(sys.argv[0]) # 運行結果如下: # Namespace(batch_size=100, hidden1=128, hidden2=32, learning_rate=0.01, num_epochs=2, train_dir='/tmp/data') # []部分源碼如下
if args is None:# args default to the system argsargs = _sys.argv[1:]else:# make sure that args are mutableargs = list(args)# default Namespace built from parser defaultsif namespace is None:namespace = Namespace()...#parse the arguments and exit if there are any errorstry:namespace, args = self._parse_known_args(args, namespace)if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)return namespace, argsexcept ArgumentError:err = _sys.exc_info()[1]self.error(str(err))之所以返回的unparsed = [] 就是因為 args 實際 “不存在”
TensorFlow中argparse部分的運行
if __name__ == '__main__': # 構建parser parser = argparse.ArgumentParser()# 設置參數parser.add_argument('--learning_rate',type=float,default=0.01,help='Initial learning rate.')parser.add_argument('--num_epochs',type=int,default=2,help='Number of epochs to run trainer.')parser.add_argument('--hidden1',type=int,default=128,help='Number of units in hidden layer 1.')parser.add_argument('--hidden2',type=int,default=32,help='Number of units in hidden layer 2.')parser.add_argument('--batch_size',type=int,default=100,help='Batch size.')parser.add_argument('--train_dir',type=str,default='/tmp/data',help='Directory with the training data.')# 獲取設置參數值,此時先前設置的FLAGS已經變成了 Namespace(batch_size=100, hidden1=128, hidden2=32, learning_rate=0.01, num_epochs=2, train_dir='/tmp/data')FLAGS, unparsed = parser.parse_known_args()# 運行 main # argv=[sys.argv[0]] 為文件名# unparsed 為其他參數,但是實際上源碼examples中不存在該部分tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Python中的argparse模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7.3 TensorFlow笔记(基础篇
- 下一篇: Python ML环境搭建与学习资料推荐