關(guān)鍵詞:config.ini? ? ? readConfig.py
config.ini
[HTTP]
scheme = http
baseurl = 192.168.1.200
port = 80
timeout = 10.0
readConfig.py
import os
import configparser
proDir = os.path.dirname(os.path.realpath(__file__))
configPath = os.path.join(proDir, 'config.ini')
class ReadConfig:
? ? ? ? def __init__(self):
? ? ? ? ? ? ? ? fd = open(configPath)
? ? ? ? ? ? ? ? data = fd.read()
? ? ? ? ? ? ? ? #? remove BOM
? ? ? ? ? ? ? ? ? #Windows文件編碼為utf-8 + BOM, 文件內(nèi)容會(huì)在開始插入三個(gè)可視的字符。
? ? ? ? ? ? ? ? if data[:3] == codecs.BOM_UTF8:
? ? ? ? ? ? ? ? ? ? ? ? data = data[3:]
? ? ? ? ? ? ? ? ? ? ? ? file = codecs.open(configPath, "w")
? ? ? ? ? ? ? ? ? ? ? ? file.write(data)
? ? ? ? ? ? ? ? ? ? ? ? file.close()
? ? ? ? ? ? ? ? fd.close()
? ? ? ? ? ? ? ? self.cf = configparser.ConfigParser()
? ? ? ? ? ? ? ? self.cf.read(configPath)
? ? ? ? def get_http(self, name):
? ? ? ? ? ? value = self.cf.get("HTTP", name)
? ? ? ? ? ? return value
一、ConfigParser簡介
ConfigParser 是用來讀取配置文件的包,(配置文件的格式與windows ini文件類似)。配置文件的格式如下:中括號(hào)“[ ]”內(nèi)包含的為section。section 下面為類似于key-value 的配置內(nèi)容。
[db]
db_host = 127.0.0.1
db_port = 69
db_user = root
db_pass = root
host_port = 69
[concurrent]
thread = 10
processor = 20
括號(hào)“[ ]”內(nèi)包含的為section。緊接著section 為類似于key-value 的options 的配置內(nèi)容。
二、ConfigParser 初始化對(duì)象
使用ConfigParser 首選需要初始化實(shí)例,并讀取配置文件:
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
三、ConfigParser 常用方法
1、獲取所用的section節(jié)點(diǎn)
# 獲取所用的section節(jié)點(diǎn)
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
print(config.sections())
#運(yùn)行結(jié)果
# ['db', 'concurrent']
2、獲取指定section 的options。即將配置文件某個(gè)section 內(nèi)key 讀取到列表中:
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.options("db")
print(r)
#運(yùn)行結(jié)果
# ['db_host', 'db_port', 'db_user', 'db_pass', 'host_port']
3、獲取指點(diǎn)section下指點(diǎn)option的值
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.get("db", "db_host")
# r1 = config.getint("db", "k1") #將獲取到值轉(zhuǎn)換為int型
# r2 = config.getboolean("db", "k2" ) #將獲取到值轉(zhuǎn)換為bool型
# r3 = config.getfloat("db", "k3" ) #將獲取到值轉(zhuǎn)換為浮點(diǎn)型
print(r)
#運(yùn)行結(jié)果
# 127.0.0.1
4、獲取指點(diǎn)section的所用配置信息
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
r = config.items("db")
print(r)
#運(yùn)行結(jié)果
#[('db_host', '127.0.0.1'), ('db_port', '69'), ('db_user', 'root'), ('db_pass', 'root'), ('host_port', '69')]
5、修改某個(gè)option的值,如果不存在則會(huì)出創(chuàng)建
# 修改某個(gè)option的值,如果不存在該option 則會(huì)創(chuàng)建
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
config.set("db", "db_port", "69")? #修改db_port的值為69
config.write(open("ini", "w"))
運(yùn)行結(jié)果
6、檢查section或option是否存在,bool值
import configparser
config = configparser.ConfigParser()
config.has_section("section") #是否存在該section
config.has_option("section", "option")? #是否存在該option
7、添加section 和 option
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
if not config.has_section("default"):? # 檢查是否存在section
? ? config.add_section("default")
if not config.has_option("default", "db_host"):? # 檢查是否存在該option
? ? config.set("default", "db_host", "1.1.1.1")
config.write(open("ini", "w"))
運(yùn)行結(jié)果
8、刪除section 和 option
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
config.remove_section("default") #整個(gè)section下的所有內(nèi)容都將刪除
config.write(open("ini", "w"))
運(yùn)行結(jié)果
9、寫入文件
以下的幾行代碼只是將文件內(nèi)容讀取到內(nèi)存中,進(jìn)過一系列操作之后必須寫回文件,才能生效。
import configparser
config = configparser.ConfigParser()
config.read("ini", encoding="utf-8")
寫回文件的方式如下:(使用configparser的write方法)
config.write(open("ini", "w"))