@hainingwyx
2018-09-08T21:59:05.000000Z
字数 2272
阅读 1610
python
Python 读取写入配置文件很方便,可使用内置的 configparser 模块。该模块支持读取配置文件,如 windows 下的 .conf 及 .ini 文件等。
例如:
[db]
db_port = 3306
db_user = root
db_host = 127.0.0.1
db_pass = xgmtest
[concurrent]
processor = 20
thread = 10
read(filename)
直接读取文件内容
-sections()
得到所有的section,并以列表的形式返回
options(section)
得到该section的所有option
items(section)
得到该section的所有键值对
get(section,option)
得到section中option的值,返回为string类型
getint(section,option)
得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。
示例代码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
import ConfigParser
import os
os.chdir("D:\\Python_config")
cf = ConfigParser.ConfigParser()
# cf.read("test.ini")
cf.read("test.conf")
#return all section
secs = cf.sections()
print 'sections:', secs, type(secs)
opts = cf.options("db")
print 'options:', opts, type(opts)
kvs = cf.items("db")
print 'db:', kvs
#read by type
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")
#read int
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
ConfigParser
write(fp)
将config对象写入至某个 .init 格式的文件 Write an .ini-format representation of the configuration state.
add_section(section)
添加一个新的section
set( section, option, value )
对section中的option进行设置,需要调用write将内容写入配置文件 ConfigParser2
remove_section(section)
删除某个 section
remove_option
(section, option) 删除某个 section 下的 option
示例代码
import ConfigParser
import os
os.chdir("D:\\Python_config")
cf = ConfigParser.ConfigParser()
# add section / set option & key
cf.add_section("test")
cf.set("test", "count", 1)
cf.add_section("test1")
cf.set("test1", "name", "aaa")
# write to file
with open("test2.ini","w+") as f:
cf.write(f)
ConfigParser2
配置文件的语法比python源文件更自由
prefix=/usr/local
prefix: /usr/local
两者等效。
配置文件中的名字不区分大小写
>>> cfg.get('installation','PREFIX')
'/usr/local'
>>> cfg.get('installation','prefix')
'/usr/local'
>>>
getboolean()查找任何可行的值
log_errors = true
log_errors = TRUE
log_errors = Yes
log_errors = 1
以上等价
配置文件整体读取
[installation]
library=%(prefix)s/lib
include=%(prefix)s/include
bin=%(prefix)s/bin
prefix=/usr/local
prefix定义在之前之后无影响
能一次读取多个配置文件然后合并成一个配置,变量的改写采取的是后发制人策略,以最后一个为准。
https://www.cnblogs.com/feeland/p/4514771.html
https://python3-cookbook.readthedocs.io/zh_CN/latest/c13/p10_read_configuration_files.html