使用ConfigParser模块解析普通文件

ConfigParser模块是Python中专门用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容:

# build.ini
[db]
db_host = 127.0.0.1
db_port = 22
db_user = root
db_pass = 1234

[handle]
handle_thread = 10
handle_processor = 20
常见的处理方法如下:

import ConfigParser as cp

### 初始化实例,并读取配置文件
cf = cp.ConfigParser()
cf.read("build.ini")

### 获取所有sections
st = cf.sections()
print 'section:', st

### 获取指定sections的options
op = cf.options("db")
print 'options:', op

### 获取指定section的配置信息
vl = cf.items("db")
print 'db_k==v:', vl

### 按照类型读取指定section的option信息
# get()           //-->获取字符串变量
# getint()        //-->获取整数型变量
# getfloat()      //-->获取浮点型变量
# getboolean()    //-->获取布尔型变量
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")
print "db_host:", db_host
print "db_port:", db_port
print "db_user:", db_user
print "db_pass:", db_pass

### 设置某个option的值,用w来保存设置
cf.set("db", "db_pass", "4321")
cf.write(open("build.ini", "w"))

### 添加一个section,用w来保存设置
cf.add_section("system")
cf.set("system", "system_os", "Linux")
cf.set("system", "system_admin", "root")
cf.set("system", "system_version", "4.11.12")
cf.write(open("build.ini", "w"))

### 移除section或者option,用w来保存设置
cf.remove_option("system","system_os")
cf.remove_section("system")
cf.write(open("build.ini", "w"))
上面的输出大概如下

section: ['db', 'handle']
options: ['db_host', 'db_port', 'db_user', 'db_pass']
db_k==v: [('db_host', '127.0.0.1'), ('db_port', '22'), ('db_user', 'root'), ('db_pass', '4321')]
db_host: 127.0.0.1
db_port: 22
db_user: root
db_pass: 4321
如果配置文件不是上面标准的格式,要如何解析

# 配置文件名:build.ini
db_host = 127.0.0.1
db_port = 22
db_user = root
db_pass = 4321
一般能想到的处理办法:

user = ''
port = 0
with open(r'build.ini','r') as fd:
    for line in fd:
        if line.split('=')[0].strip() == 'db_user':
            user = line.split('=')[1]
        if line.split('=')[0].strip() == 'db_port':
            port = line.split('=')[1]
print 'user: %s port: %s' % (user, port)
上面的配置文件build.ini不是标准的ini,缺少section,简单处理下,就是自己在脚本中添加个[db],然后再处理!

import ConfigParser as cp
import StringIO

cfg = cp.RawConfigParser()
cfg.readfp(StringIO.StringIO('[db]\n' + open('build.ini').read()))
user = cfg.get('db', 'db_user')
port = cfg.get('db', 'db_port')
print 'user: ', user
print 'port: ', port
经过上面的处理,同样能达到上面的效果,而且代码简洁,输出漂亮,而且更Pythonic







  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
configparser模块是一个用于读取和写入配置文件的Python标准模块。配置文件通常是用于存储应用程序的设置和配置信息的文件。下面是使用configparser模块的基本步骤: 1. 导入configparser模块: ```python import configparser ``` 2. 创建一个ConfigParser对象: ```python config = configparser.ConfigParser() ``` 3. 读取配置文件: ```python config.read('config.ini') ``` 4. 获取配置项的值: ```python value = config.get('section', 'option') ``` 其中,section是配置文件中的一个段落,option是段落中的一个选项。例如,在以下配置文件中: ``` [database] host = localhost port = 3306 user = root password = test123 database = testdb ``` 要获取host的值,可以使用以下代码: ```python host = config.get('database', 'host') print(host) # 输出:localhost ``` 5. 修改配置项的值: ```python config.set('section', 'option', 'new_value') ``` 例如,要将host修改为127.0.0.1,可以使用以下代码: ```python config.set('database', 'host', '127.0.0.1') ``` 6. 写入配置文件: ```python with open('config.ini', 'w') as f: config.write(f) ``` 完整示例: ```python import configparser config = configparser.ConfigParser() # 读取配置文件 config.read('config.ini') # 获取配置项的值 host = config.get('database', 'host') port = config.getint('database', 'port') user = config.get('database', 'user') password = config.get('database', 'password') database = config.get('database', 'database') print('host:', host) print('port:', port) print('user:', user) print('password:', password) print('database:', database) # 修改配置项的值 config.set('database', 'host', '127.0.0.1') # 写入配置文件 with open('config.ini', 'w') as f: config.write(f) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值