Python读写配置文件

一、命令选项说明
1) 基本的读取配置文件
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。
 
2) 基本的写入配置文件
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。

二、配置文件的格式
a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option;
b) section 用 [sect_name] 表示,每个option是一个键值对,使用分隔符 = 或 : 隔开;
c) 在 option 分隔符两端的空格会被忽略掉
d) 配置文件使用 # 和 ; 注释

三、实例代码
1、配置文件
/Users/nisj/PycharmProjects/BiDataProc/ConfigFileOper/Config.ini
[Home]
ip = 10.15.40.123
mask = 255.255.255.0
gateway = 10.15.40.1
dns = 211.82.96.1

[Company]
ip = 172.17.29.120
mask = 255.255.255.0
gateway = 172.17.29.1
dns = 0.0.0.0

[Db]
host = 127.0.0.1
port = 3306
user = root
pass = 123

[Ssh]
host = 192.168.1.101
port = 21
user = nisj
pass = 123

2、配置文件的写入
/Users/nisj/PycharmProjects/BiDataProc/ConfigFileOper/ConfigFileWrite.py
# -*- coding: utf-8 -*-

import ConfigParser
import sys

#读取配置文件
config = ConfigParser.ConfigParser()
config.read("Config.ini")

#写入家庭网址配置文件
try:
    config.add_section("Home")
    config.set("Home", "IP", "10.15.40.123")
    config.set("Home", "Mask", "255.255.255.0")
    config.set("Home", "Gateway", "10.15.40.1")
    config.set("Home", "DNS", "211.82.96.1")
except ConfigParser.DuplicateSectionError:
    print("Section 'Home' already exists")

#写入公司网址配置文件
try:
    config.add_section("Company")
    config.set("Company", "IP", "172.17.29.120")
    config.set("Company", "Mask", "255.255.255.0")
    config.set("Company", "Gateway", "172.17.29.1")
    config.set("Company", "DNS", "0.0.0.0")
except ConfigParser.DuplicateSectionError:
    print("Section 'Company' already exists")

#写入数据库配置文件
try:
    config.add_section("Db")
    config.set("Db", "host", "127.0.0.1")
    config.set("Db", "port", 3306)
    config.set("Db", "user", "root")
    config.set("Db", "pass", "123")
except ConfigParser.DuplicateSectionError:
    print("Section 'Db' already exists")

#写入Ssh连接配置文件
try:
    config.add_section("Ssh")
    config.set("Ssh", "host", "192.168.1.101")
    config.set("Ssh", "port", 21)
    config.set("Ssh", "user", "nisj")
    config.set("Ssh", "pass", "123")
except ConfigParser.DuplicateSectionError:
    print("Section 'Ssh' already exists")

#写入配置文件
config.write(open("Config.ini", "w"))

# -----------------------------------------------------------
# 写入的系统演示
# 1、实例化 ConfigParser 并加载配置文件
cp = ConfigParser.SafeConfigParser()
cp.read('myConfig.conf')

# 2、添加、删除 section、判断 section 是否存在
print cp.has_section('HomeIp')
cp.add_section('HomeIp')
cp.remove_section('HomeIp')
cp.add_section('db')

# 3、设置、删除 option、判断 option 是否存在
print cp.has_option('db', 'host')
cp.set('db', 'host','192.168.1.102')
cp.set('db', 'user','administrator')
cp.set('db', 'passwd','111111')
cp.remove_option('db', 'host')

# 4、保存配置,set、 remove_option、 add_section 和 remove_section 等操作并不会修改配置文件,write 方法可以将 ConfigParser 对象的配置写到文件中
cp.write(open('myConfig.conf', 'w'))
cp.write(sys.stdout)

3、配置文件的读取
/Users/nisj/PycharmProjects/BiDataProc/ConfigFileOper/ConfigFileRead.py
# -*- coding: utf-8 -*-

import ConfigParser

#读取配置文件
config = ConfigParser.ConfigParser()
config.read("Config.ini")

# 读取家庭地址信息
ip = config.get("Home", "IP")
mask = config.get("Home", "mask")
gateway = config.get("Home", "Gateway")
dns = config.get("Home", "DNS")

print((ip, mask + "\n" + gateway, dns))

# 读取公司地址信息
ip = config.get("Company", "IP")
mask = config.get("Company", "mask")
gateway = config.get("Company", "Gateway")
dns = config.get("Company", "DNS")

print((ip, mask + "\n" + gateway, dns))

# 读取数据库信息
host = config.get("Db", "host")
port = config.get("Db", "port")
user = config.get("Db", "user")
passwd = config.get("Db", "pass")

print(host, port, user, passwd)


# 读取远程登录信息
host = config.get("Ssh", "host")
port = config.get("Ssh", "port")
user = config.get("Ssh", "user")
passwd = config.get("Ssh", "pass")

print(host, port, user, passwd)

# -----------------------------------------------------------
# 读取的系统演示
# 1、获取 section 列表、option 键列表和 option 键值元组列表
print 'all sections:', config.sections()
print 'options of [db]:', config.options('Db')
print 'items of [ssh]:', config.items('Ssh')

# 2、读取指定的配置信息
print 'host of db:', config.get('Db', 'host')
print 'host of ssh:', config.get('Ssh', 'host')

# 3、其他方面的读取
# 按类型读取配置信息:getint、 getfloat 和 getboolean
# 判断option是否存在
# 判断section是否存在
print type(config.getint('Db', 'port'))
print config.has_option('Db', 'host')
print config.has_section('Db')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值