Python中的argparse模块
簡介
argparse是python用于解析命令行參數(shù)和選項(xiàng)的標(biāo)準(zhǔn)模塊,用于代替已經(jīng)過時(shí)的optparse模塊。argparse模塊的作用是用于解析命令行參數(shù).
如果你想詳細(xì)的了解它的功能.建議閱讀這個(gè),或者這個(gè)
本篇文章只對其基本功能進(jìn)行介紹,并對TensorFlow的examples中argarse使用進(jìn)行詳細(xì)的介紹
功能
原本的功能是命令行解析模塊
使用argparse的第一步就是創(chuàng)建一個(gè)解析器對象,并告訴它將會(huì)有些什么參數(shù)。那么當(dāng)你的程序運(yùn)行時(shí),該解析器就可以用于處理命令行參數(shù)。
解析器類是 ArgumentParser 。構(gòu)造方法接收幾個(gè)參數(shù)來設(shè)置用于程序幫助文本的描述信息以及其他全局的行為或設(shè)置。
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() 添加參數(shù)
這個(gè)方法是用來添加參數(shù)的方法,下面是一個(gè)示例
parser.add_argument('--hidden2',type=int,default=32,help='Number of units in hidden layer 2.')其中help是默認(rèn)參數(shù),你可以在構(gòu)造parser 時(shí)選擇其是否存在,在實(shí)際使用中 可以使用 -h 或者 –help調(diào)用該參數(shù)
第一個(gè)參數(shù)是字符串,也就是這個(gè)參數(shù)的名字,之后的參數(shù)(除help)都是以**kwargs傳入的
之后**kwargs 還有其他參數(shù)會(huì)被解析,其中type為參數(shù)數(shù)據(jù)類型,default為參數(shù)默認(rèn)值,其他參數(shù)請參考argparse的源碼
parser.parse_known_args() 獲取已知參數(shù)
TensorFlow中的實(shí)例
FLAGS, unparsed = parser.parse_known_args() print(FLAGS, unparsed) print(sys.argv[0]) # 運(yùn)行結(jié)果如下: # 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 = [] 就是因?yàn)?args 實(shí)際 “不存在”
TensorFlow中argparse部分的運(yùn)行
if __name__ == '__main__': # 構(gòu)建parser parser = argparse.ArgumentParser()# 設(shè)置參數(shù)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.')# 獲取設(shè)置參數(shù)值,此時(shí)先前設(shè)置的FLAGS已經(jīng)變成了 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()# 運(yùn)行 main # argv=[sys.argv[0]] 為文件名# unparsed 為其他參數(shù),但是實(shí)際上源碼examples中不存在該部分tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Python中的argparse模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7.3 TensorFlow笔记(基础篇
- 下一篇: 脚本:获取CSDN文章的访问量