python 配置文件的读写

对于一些小的项目代码,配置参数都是固定的,可以直接写入代码里面,有些则可以通过输入框输入,但对于一个大的工程,或者说真正意义的工程来说,配置参数是多变的,或者数据量是很庞大的,所以需要一个文件进行保存。最近刚好要用到,所以上网搜了一下资料,整理了一下。

python 的配置文件主要用 .ini后缀的文件,自带了一个叫 configparser的库。
下面是这个库的基本使用:

首先是如何编写配置文件

(1)直接用记事本新建一个配置文件

python库配置文件 python编写配置文件_python库配置文件


(2)编写规则:

每个模块叫一个section,名字用中括号 " [] " 括起来

然后每一行写一个option ,每个选项就是一个option。直接写名字,后面加 " = " 再加上它的值就行

可以在配置文件中加入注释 ,但是注释必须是单独的一行,且以 “#” 开头。只是每次运行时不会读入注释,只要运行一次,写入文件后,所有的注释都会消失。所以仅仅用于第一次初始化时有用(如果不进行写入,则可以一直在)。

[section1]
option1 = 11
option2 = 123
#我是注释
#我是另一个注释
[section2]
name = "czj"
password = 123456
add = "sicnu"

保存文件的时候要修改后缀名,编码格式要是 utf-8 以免出错。

python库配置文件 python编写配置文件_python_02

创建一个类

#coding = utf-8
import configparser
#创建一个类
config = configparser.ConfigParser()
config.read("demo.ini", encoding="utf-8")

获取所有的section节点

print(config.sections())

运行结果

python库配置文件 python编写配置文件_配置文件_03

获取指定section的所有option选项,返回值为列表

print(config.options("section1"))

运行结果

python库配置文件 python编写配置文件_python库配置文件_04

获取某个section的所有option,及其值

result = config.items("section2")
print(result)
#返回值为列表类型
print(type(result))
#列表的每一个元素为元组类型
result0=result[0]
print(type(result0))

运行结果

python库配置文件 python编写配置文件_写入文件_05

取出对应section的指定的option值

#1.get方法
print(config.get("section1","option2"))
#2.另一种读取方法
print(config["section2"]["password"])

运行结果

python库配置文件 python编写配置文件_python库配置文件_06

修改某个option的值,如果不存在则会出现创建

config.set("section1", "option1", "11")  #修改db_port的值为69
config.write(open("demo.ini", "w"))

检查section或option是否存在,bool值

config.has_section("section1") #是否存在该section
config.has_option("section1", "option1")  #是否存在该option

添加section 和 option

if not config.has_section("default"):  # 检查是否存在section
    config.add_section("default")
if not config.has_option("default", "db_host"):  # 检查是否存在该option
    config.set("default", "db_host", "1.1.1.1")
config.write(open("demo.ini", "w"))

删除section 和 option

config.remove_section("default") #整个section下的所有内容都将删除
config.remove_option("section1","option3")
config.write(open("demo.ini", "w"))

写入文件

在创建类的时候,使用了read的方法,是把文件读到了内存,在内存中进行了改变,但是如果不进行文件的写入,那么这些修改都是没用的,文件不会产生任何的改变。切记切记,每次更改之后记得重新写回文件中

config.write(open("demo.ini", "w"))