Python-通过configparser读写配置文件

Python读写配置文件:

1.创建配置文件(文件名以.conf或.ini结束的文件表示配置文件)

2.导入所需模块 OS, configparser

>>> import os
>>> from configparser import ConfigParser

3.将python工作目录定位到配置文件所在目录 

>>> os.getcwd() #返回当前工作目录 
'C:\Users\ASUS'
>>> os.chdir("Desktop\config\")#切换工作目录 
>>> os.getcwd()
'C:\Users\ASUS\Desktop\config'

4.实例化一个ConfigParser对象用于操作配置文件

>>> cf = ConfigParser()

5.操作配置文件(增删改查)

 名词解释:

section:分组名称,使用 [] 表示,如[窗帘]

options:section分组下 一组信息中 等号 左边的值,可以理解为key

读操作:

cf.read(filename)
 返回文件名 列表

>>> cf.read("config.conf")
['config.conf']

 当访问的文件名不存在时,返回一个空列表

>>> cf.read(("confi.ini"))
[]

支持传入一个元组,同时打开多个文件

>>> cf.read(("config.ini","config.conf"))
['config.ini', 'config.conf']

cf.sections()

返回一个列表,包含所有分组名称

1 >>> cf.sections()
2 ['窗帘', '石头', '游戏角色']

cf.options(section名)
 返回一个列表,元素为: 指定section分组下option名 

>>> cf.options("窗帘")
['color', 'width', 'height', 'picture']

cf.get(section名,option名)
返回一个字符串 内容为指定section分组下option所对应的值 (可以理解为Value)

>>> cf.get("窗帘","color")
'pink'

写操作:

创建一个新的日志文件shop.ini 

通过os.chdir()确认当前目录下没有shop.ini文件

>>> os.listdir()
['config - 副本.txt', 'config.conf', 'config.ini']

cf.add_section(section名) 

添加分组名

>>> cf.add_section("book")

cf.set(section名,option名,value)

添加指定分组下的option与其对应的value

>>> cf.set("book","name","安徒生童话")

补充:

写入的value一定是字符串类型,若要使用数值,也应该是字符型数值,否则会报错

不必担心数据类型的问题,通过get方法,会将字符串对象 转换为我们所需要的类型

通过cf.get方法,读取到的字符型数值 是字符串类型

通过cf.getint()方法会将字符型数值对象 转换为数值型对象

类似的方法还有:'getboolean', 'getfloat'

错误示范:

>>> cf.set("book","price",10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:PythonPython35libconfigparser.py", line 1189, in set
    self._validate_value_types(option=option, value=value)
  File "D:PythonPython35libconfigparser.py", line 1174, in _validate_value_types
    raise TypeError("option values must be strings")
TypeError: option values must be strings

正确示范:

>>> cf.set("book","price","10")

验证 数据类型:

cf.get(section名,option名)返回字符串对象

>>> price = cf.get("book","price")
>>> type(price)
<class 'str'>

 cf.getint(section名,option名) 返值数值型对象

>>> p = cf.getint("book","price")
>>> type(p)
<class 'int'>

  

 cf.wirte(fp)

将以上内容写入日志文件(保存到硬盘) 

>>> with open("book.ini","w") as f:
      cf.write(f) 

确认创建新的日志文件

>>> os.listdir()
['book.ini', 'config - 副本.txt', 'config.conf', 'config.ini']

 

补充:

1.直接写操作会生成一个新的日志文件

with open(filename,"w") as f,filename 为当前不存在的名称,会创建一个新的日志文件

2.如修改日志,先read 日志文件,再进行写操作

with open(filename,"w") as f,filename改为要修改的日志名称即可

 声明:原创文章,欢迎转载,转载请注明出处:http://www.cnblogs.com/kaerxifa/p/8688467.html

原文地址:https://www.cnblogs.com/kaerxifa/p/8688467.html