日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中的argparse模块

發布時間:2025/3/21 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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傳入的

def add_argument(self, *args, **kwargs): """add_argument(dest, ..., name=value, ...)add_argument(option_string, option_string, ..., name=value, ...)"""# if no positional args are supplied or only one is supplied and# it doesn't look like an option string, parse a positional# argument# 如果只傳入一個參數,那么默認只解析該參數(即使它不是字符串)

之后**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模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。