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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python中configparser详解_python ConfigParser模块详解

發(fā)布時(shí)間:2025/3/20 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中configparser详解_python ConfigParser模块详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

功能介紹

在程序中使用配置文件來靈活的配置一些參數(shù)是一件很常見的事情,配置文件的解析并不復(fù)雜,在python里更是如此,在官方發(fā)布的庫中就包含有做這件事情的庫,那就是ConfigParser,這里簡單的做一些介紹。

ConfigParser解析的配置文件的格式比較象ini的配置文件格式,就是文件中由多個(gè)section構(gòu)成,每個(gè)section下又有多個(gè)配置項(xiàng)。

方法介紹:

Class RawConfigParser([defaults])

基本配置類,當(dāng)傳遞defaults時(shí),會(huì)初始化到內(nèi)置字典中。該類不支持智能修復(fù),2.3版本新特征。

Class ConfigParser([defaults])

繼承之RawConfigParser類,實(shí)現(xiàn)了智能特性,為get(),items()方法添加了可選參數(shù)。Defaults中的值必須能填補(bǔ)“%()s”。注意__name__是內(nèi)置的default;該值是section的名稱,它會(huì)被defaults提供的任何值所覆蓋。

所以的用于填補(bǔ)的option名稱都會(huì)通過optionxform()方法傳遞,就像其他任何option名稱一樣。例如,使用optionxform()的默認(rèn)實(shí)現(xiàn)(將option名稱轉(zhuǎn)化成小寫),“foo %(bar)s”和“foo %(BAR)s”的值相等。

Class SafeConfigParser([defaults])

繼承至ConfigParser,實(shí)現(xiàn)了更多智能特征,實(shí)現(xiàn)更有可預(yù)見性,新的應(yīng)用更偏好這個(gè)版本,如果他們不需要對python老版本的兼容性,2.3版本。

Exception NoSectionError

當(dāng)沒有發(fā)現(xiàn)給定section時(shí)拋出。

Exception DuplicateSectionError

如果add_section()方法被調(diào)用時(shí),提供的section參數(shù)的值已經(jīng)存在時(shí)拋出。

Exception NoOptionError

指定option不存在時(shí)拋出。

Exception InterpolationError

執(zhí)行字符串填補(bǔ)時(shí)拋出的異常的基類。

Exception InterpolationDepthError

當(dāng)填補(bǔ)字符串因?yàn)榈螖?shù)超過了MAX_INTERPOLATION_DEPTH值時(shí)拋出的異常,InterpolationError的子類。

Exception InterpolationMissingOptionError

當(dāng)option引用的值不存在時(shí)拋出,該異常為InterpolationError的子類,2.3版本新加。

Exeption InterpolationSyntaxError

當(dāng)原文件格式?jīng)]有遵守規(guī)定的語法時(shí)拋出的異常,繼承至InterpolationError,2.3版本。

Exception MissingSectionHeaderError

嘗試解析沒有section頭的文件時(shí)拋出。

Exception ParsingError

解析文件時(shí)發(fā)生錯(cuò)誤。

MAX_INTERPOLATION_DEPTH

get()方法當(dāng)raw參數(shù)為false時(shí),遞歸的對大深度。只適用與ConfigParser類。

RawConfigParser對象

RawConfigParser實(shí)例的方法:

defaults()

返回全部示例中所以defaults。

sections()

返回有效的section列表,DEFAULT不包含在列表中。

add_section(section)

為實(shí)例添加一個(gè)section,如果給定的section名已經(jīng)存在,將拋出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,將會(huì)按單個(gè)文件來解析。如果在filenames中的文件不能打開,該文件將被忽略。這樣設(shè)計(jì)的目的是,讓你能指定本地有可能是配置文件的列表(例如,當(dāng)前文件夾,用戶的根目錄,及一些全系統(tǒng)目錄),所以在列表中存在的配置文件都會(huì)被讀取。如果文件都不存在,那么ConfigParser實(shí)例會(huì)包含空數(shù)據(jù)集。一個(gè)需要從配置文件讀取初始化數(shù)據(jù)的應(yīng)用程序,應(yīng)該使用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()方法)中的似文件類讀取并解析配置數(shù)據(jù),如果filename被省略,fp有一個(gè)name屬性,該屬性用于獲取filename;默認(rèn)是“??>”。

get(section, option)

獲取section下option的值。

getint(section, option)

強(qiáng)制指定section下的option的值,作為Int類型返回的方便方法。

getfloat(section, option)

強(qiáng)制section下的option值,作為float類型返回的方法方法。

getboolean(section, option)

強(qiáng)制section下的option值,作為布爾類型返回的方法方法。注意可接受的option的true值有“1”,“yes”,“true”及“on”,可接受的false值有“0”,“no”,“false”,“off”。字符串值不檢測大小寫,其他值會(huì)拋出ValueError異常。

itmes(section)

返回給定section下的所以option的(name, value)對列表。

set(section, option, value)

如果給定的setion存在,為option設(shè)定給定的值;否則拋出NoSectionError異常。當(dāng)可能使用RawConfigParser(或者ConfigParser的參數(shù)raw為true)來在內(nèi)部存儲(chǔ)非字符串值,所以功能(包括填補(bǔ)和輸出到文件)只能使用字符串值來歸檔。1.6版本新增。

write(fileobject)

將配置表示寫入指定文件類,該表示以后可以通過調(diào)用read()來解析,1.6版本新增。

remove_option(section, option)

從指定section中刪除指定option,如果section不存在,拋出NoSectionError異常;如果option存在,則刪除,并返回True;否則返回false。1.6版本新增。

remove_section(section)

從配置文件中刪除指定的section,如果section確實(shí)存在,返回true,否則返回false。

optionxform(option)

將輸入文件中,或客戶端代碼傳遞的option名轉(zhuǎn)化成內(nèi)部結(jié)構(gòu)使用的形式。默認(rèn)實(shí)現(xiàn)返回option的小寫形式;子類可能重寫該方法或客戶端代碼可能將該方法作為實(shí)例的屬性,以此來影響它的行為。將此用于str(),例如,會(huì)使option名稱大小寫敏感。

ConfigParser對象

ConfigParser類擴(kuò)展了RawConfigParser的一些接口方法,添加了一些可選參數(shù)。

get(section, option [, raw[, vars]])

獲取給定section下的option的值,所以“%”占位符在返回值中被填補(bǔ),基于構(gòu)造時(shí)傳遞的默認(rèn)值,就像option,vars也被提供,除非raw參數(shù)為true。

items(section, [, raw[, vars]])

返回給定section下的所以option的(name, value)對列表。可選參數(shù)同get方法,2.3版本新增。

SafeConfigParser對象

SafeConfigParser類實(shí)現(xiàn)了ConfigParser相同的接口,新增如下方法:

set(section, option, value)

如果給定的section存在,給option賦值;否則拋出NoSectionError異常。Value值必須是字符串(str或unicode);如果不是,拋出TypeError異常,2.4版本新增。

實(shí)際應(yīng)用:

比如:

[db]

db_host=127.0.0.1

db_port=3306

db_user=root

db_pass=password

[concurrent]

thread=10

processor=20

假設(shè)上面的配置文件的名字為test.conf。里面包含兩個(gè)section,一個(gè)是db, 另一個(gè)是concurrent, db里面還包含有4項(xiàng),concurrent里面有兩項(xiàng)。這里來做做解析:

#-*-?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

#修改一個(gè)值,再寫回去

cf.set(“db”,?”db_pass”,?”zhaowei”)

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的python中configparser详解_python ConfigParser模块详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。