- 零基础学Python(第2版)
- 黄传禄 张克强 赵越
- 1279字
- 2025-03-22 17:27:14
7.1.9 配置文件的访问
在应用程序中通常使用配置文件定义一些参数。例如,数据库配置文件用于记录数据库的字符串连接、主机名、用户名、密码等信息。Windows的ini文件就是一种传统的配置文件,ini文件由多个块组成,每个块由有多个配置项组成。例如,创建以下mysqlconfig.ini文件,此文件记录了连接数据库MySQL的信息。
[Mysql] uid = select id from user where name="root" [DATABASE] host =127.0.0.1 user = test passwd = 123456 port = 3306 database = jxcia
其中每个方括号表示一个配置块,配置块下的多个赋值表达式就是配置项。Python标准库的configparser模块用于解析配置文件。ConfigParser模块的ConfigParser类可读取ini文件的内容。下面【例7-6】这段代码从ODBC.ini文件中读取每个配置块、配置项的标题和配置的内容。
【例7-6.py】
01 # 读配置文件 02 import configparser # 导入configparser模块 03 config = configparser.ConfigParser() 04 config.read("D:\\python例题源代码\\ch07code\\mysqlconfig.ini") 05 sections = config.sections() # 返回所有的配置块 06 print ("配置块:", sections) 07 m = config.options("DATABASE") # 返回所有的配置项 08 print ("配置项:", m) 09 d = config.items("DATABASE") 10 print ("内容:", d) 11 # 根据配置块和配置项返回内容 12 host = config.get("DATABASE", "host") 13 print (host) 14 user = config.get("DATABASE", "user") 15 print (user) 16 passwd= config.get("DATABASE", "passwd") 17 print (passwd) 18 port = config.get("DATABASE", "port") 19 print (port) 20 database = config.get("DATABASE", "database") 21 print (database)
【代码说明】
·第3行代码创建1个ConfigParser对象config。
·第4行代码读取mysqlconfig.ini文件。
·第5行代码调用sections()返回配置块的标题。
·第6行代码输出配置块的标题。输出结果如下所示。
配置块: ['Mysql', 'DATABASE']
·第7行代码调用options()返回“DATABASE”块下各配置项的标题。
·第8行代码输出配置项的标题。输出结果如下所示。
配置项:['host', 'user', 'passwd', 'port', 'database']
·第9行代码调用items()返回“DATABASE”块下各配置项的内容。
·第10行代码输出配置项的内容。输出结果如下所示。
内容: [('host', '127.0.0.1'), ('user', 'test'), ('passwd', '123456'), ('port', '3306'), ('database', 'jxcia')]
·第12~21行代码调用get()方法分别获取“DATABASE”块下每个配置项的内容。
配置文件的写入操作也很简单。首先调用add_section()方法添加1个新的配置块,然后调用set()方法,设置配置项目,最后写入配置文件mysqlconfig.ini即可。下面通过【例7-7】的代码实现。
【例7-7.py】
01 # 写配置文件 02 import configparser 03 config = configparser.ConfigParser() 04 config.add_section("account") # 添加新的配置块 05 config.set("account", "username", "user1") # 添加新的配置项 06 f = open("D:\\python例题源代码\\ch07code\\mysqlconfig.ini", "a+") 07 config.write(f) 08 f.close()
【代码说明】
·第4行代码调用add_section()添加配置块。
·第5行代码调用set()添加配置项,并设置其内容。
·第6行代码以“a+”模式打开文件mysqlconfig.ini,追加新的配置。
·第7行代码写配置文件。
配置文件的修改需要先读取mysqlconfig.ini文件,然后调用set()方法设置指定配置块下某个配置项的值,最后写入配置文件mysqlconfig.ini。下面【例7-8】这段代码在mysqlconfig.ini文件中修改了配置块“account”。
【例7-8.py】
01 # 修改配置文件 02 import configparser 03 config = configparser.ConfigParser() 04 config.read("D:\\python例题源代码\\ch07code\\mysqlconfig.ini") 05 config.set("account", "username","user2") # 修改配置项 06 f = open("D:\\python例题源代码\\ch07code\\mysqlconfig.ini", "r+") 07 config.write(f) 08 f.close()
【代码说明】
·第4行代码读配置文件mysqlconfig。
·第5行代码调用set()修改“account”下的配置项“username”的值为“user2”。
·第6行代码以“r+”打开配置文件mysqlconfig.ini。
·第7行代码写配置文件。
如果要删除某个配置块,调用remove_section()方法,传递需要删除的配置块名作为参数。如果要删除指定配置块下的某个配置项,调用remove_option()方法,传递需要删除的配置块名和配置项名作为参数。下面【例7-9】这段代码先删除mysqlconfig.ini文件中配置项“username”,然后删除配置块“account”。
【例7-9.py】
01 # 删除配置文件 02 import configparser 03 config = configparser.ConfigParser() 04 config.read("D:\\python例题源代码\\ch07code\\mysqlconfig.ini") 05 config.remove_option("account", "usernme") # 删除配置项 06 config.remove_section("account") # 删除配置块 07 f = open("D:\\python例题源代码\\ch07code\\mysqlconfig.ini", "w+") 08 config.write(f) 09 f.close()
【代码说明】
·第5行代码调用remove_option()删除“account”下的配置项“usernme”。
·第6行代码调用remove_section()删除“account”配置块。
·第7行代码以“w+”模式写配置文件。