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:\Python\Python35\lib\configparser.py", line 1189, in set self._validate_value_types(option=option, value=value) File "D:\Python\Python35\lib\configparser.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