一、命令选项说明
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')