python中configparser详解_python ConfigParser模块详解
功能介紹
在程序中使用配置文件來靈活的配置一些參數是一件很常見的事情,配置文件的解析并不復雜,在python里更是如此,在官方發布的庫中就包含有做這件事情的庫,那就是ConfigParser,這里簡單的做一些介紹。
ConfigParser解析的配置文件的格式比較象ini的配置文件格式,就是文件中由多個section構成,每個section下又有多個配置項。
方法介紹:
Class RawConfigParser([defaults])
基本配置類,當傳遞defaults時,會初始化到內置字典中。該類不支持智能修復,2.3版本新特征。
Class ConfigParser([defaults])
繼承之RawConfigParser類,實現了智能特性,為get(),items()方法添加了可選參數。Defaults中的值必須能填補“%()s”。注意__name__是內置的default;該值是section的名稱,它會被defaults提供的任何值所覆蓋。
所以的用于填補的option名稱都會通過optionxform()方法傳遞,就像其他任何option名稱一樣。例如,使用optionxform()的默認實現(將option名稱轉化成小寫),“foo %(bar)s”和“foo %(BAR)s”的值相等。
Class SafeConfigParser([defaults])
繼承至ConfigParser,實現了更多智能特征,實現更有可預見性,新的應用更偏好這個版本,如果他們不需要對python老版本的兼容性,2.3版本。
Exception NoSectionError
當沒有發現給定section時拋出。
Exception DuplicateSectionError
如果add_section()方法被調用時,提供的section參數的值已經存在時拋出。
Exception NoOptionError
指定option不存在時拋出。
Exception InterpolationError
執行字符串填補時拋出的異常的基類。
Exception InterpolationDepthError
當填補字符串因為迭代次數超過了MAX_INTERPOLATION_DEPTH值時拋出的異常,InterpolationError的子類。
Exception InterpolationMissingOptionError
當option引用的值不存在時拋出,該異常為InterpolationError的子類,2.3版本新加。
Exeption InterpolationSyntaxError
當原文件格式沒有遵守規定的語法時拋出的異常,繼承至InterpolationError,2.3版本。
Exception MissingSectionHeaderError
嘗試解析沒有section頭的文件時拋出。
Exception ParsingError
解析文件時發生錯誤。
MAX_INTERPOLATION_DEPTH
get()方法當raw參數為false時,遞歸的對大深度。只適用與ConfigParser類。
RawConfigParser對象
RawConfigParser實例的方法:
defaults()
返回全部示例中所以defaults。
sections()
返回有效的section列表,DEFAULT不包含在列表中。
add_section(section)
為實例添加一個section,如果給定的section名已經存在,將拋出DuplicateSectionError異常。
has_section(section)
判斷給定的section名在配置文件中是否存在,DEFAULT section不包括。
options(section)
返回給定的section下的所有可用option的列表。
has_option(section, option)
如果section存在,并包含給定的option,返回true,放在返回false, 1.6版本新增。
read(filenames)
嘗試解析文件列表,如果解析成功返回文件列表。如果filenames是string或Unicode string,將會按單個文件來解析。如果在filenames中的文件不能打開,該文件將被忽略。這樣設計的目的是,讓你能指定本地有可能是配置文件的列表(例如,當前文件夾,用戶的根目錄,及一些全系統目錄),所以在列表中存在的配置文件都會被讀取。如果文件都不存在,那么ConfigParser實例會包含空數據集。一個需要從配置文件讀取初始化數據的應用程序,應該使用readfp()方法來加載所需要的文件,之后可以使用read()方法來獲取任何可能的文件:
import ConfigParser, os config = ConfigParser.ConfigParser()config.readfp(open(‘defaults.cfg’)) config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])
2.4版本之后,返回成功解析的文件列表。
readfp(fp[, filename])
從文件或fp(值使用該對象的readline()方法)中的似文件類讀取并解析配置數據,如果filename被省略,fp有一個name屬性,該屬性用于獲取filename;默認是“??>”。
get(section, option)
獲取section下option的值。
getint(section, option)
強制指定section下的option的值,作為Int類型返回的方便方法。
getfloat(section, option)
強制section下的option值,作為float類型返回的方法方法。
getboolean(section, option)
強制section下的option值,作為布爾類型返回的方法方法。注意可接受的option的true值有“1”,“yes”,“true”及“on”,可接受的false值有“0”,“no”,“false”,“off”。字符串值不檢測大小寫,其他值會拋出ValueError異常。
itmes(section)
返回給定section下的所以option的(name, value)對列表。
set(section, option, value)
如果給定的setion存在,為option設定給定的值;否則拋出NoSectionError異常。當可能使用RawConfigParser(或者ConfigParser的參數raw為true)來在內部存儲非字符串值,所以功能(包括填補和輸出到文件)只能使用字符串值來歸檔。1.6版本新增。
write(fileobject)
將配置表示寫入指定文件類,該表示以后可以通過調用read()來解析,1.6版本新增。
remove_option(section, option)
從指定section中刪除指定option,如果section不存在,拋出NoSectionError異常;如果option存在,則刪除,并返回True;否則返回false。1.6版本新增。
remove_section(section)
從配置文件中刪除指定的section,如果section確實存在,返回true,否則返回false。
optionxform(option)
將輸入文件中,或客戶端代碼傳遞的option名轉化成內部結構使用的形式。默認實現返回option的小寫形式;子類可能重寫該方法或客戶端代碼可能將該方法作為實例的屬性,以此來影響它的行為。將此用于str(),例如,會使option名稱大小寫敏感。
ConfigParser對象
ConfigParser類擴展了RawConfigParser的一些接口方法,添加了一些可選參數。
get(section, option [, raw[, vars]])
獲取給定section下的option的值,所以“%”占位符在返回值中被填補,基于構造時傳遞的默認值,就像option,vars也被提供,除非raw參數為true。
items(section, [, raw[, vars]])
返回給定section下的所以option的(name, value)對列表。可選參數同get方法,2.3版本新增。
SafeConfigParser對象
SafeConfigParser類實現了ConfigParser相同的接口,新增如下方法:
set(section, option, value)
如果給定的section存在,給option賦值;否則拋出NoSectionError異常。Value值必須是字符串(str或unicode);如果不是,拋出TypeError異常,2.4版本新增。
實際應用:
比如:
[db]
db_host=127.0.0.1
db_port=3306
db_user=root
db_pass=password
[concurrent]
thread=10
processor=20
假設上面的配置文件的名字為test.conf。里面包含兩個section,一個是db, 另一個是concurrent, db里面還包含有4項,concurrent里面有兩項。這里來做做解析:
#-*-?encoding:?gb2312?-*-
import?ConfigParser
import?string,?os,?syscf?=?ConfigParser.ConfigParser()
cf.read(“test.conf”)
#?返回所有的section
s?=?cf.sections()
print?’section:’,?s
o?=?cf.options(“db”)
print?’options:’,?o
v?=?cf.items(“db”)
print?’db:’,?v
print?’-'*60
#可以按照類型讀取出來
db_host?=?cf.get(“db”,?”db_host”)
db_port?=?cf.getint(“db”,?”db_port”)
db_user?=?cf.get(“db”,?”db_user”)
db_pass?=?cf.get(“db”,?”db_pass”)
#?返回的是整型的
threads?=?cf.getint(“concurrent”,?”thread”)
processors?=?cf.getint(“concurrent”,?”processor”)
print?”db_host:”,?db_host
print?”db_port:”,?db_port
print?”db_user:”,?db_user
print?”db_pass:”,?db_pass
print?”thread:”,?threads
print?”processor:”,?processors
#修改一個值,再寫回去
cf.set(“db”,?”db_pass”,?”zhaowei”)
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的python中configparser详解_python ConfigParser模块详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python在画布上写文字大小_Tkin
- 下一篇: install python-pip_y