• 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

  • 相关阅读:
    多进程要时刻当心的点
    pairs和ipairs用的迭代器不一样
    #pragma pack(push,1) & #pragma pack(pop)
    负数取模不一定是正数
    切记一定要get~
    GAME有计时器,大厅没有计时器的原因
    每天一个linux命令(1):ls命令
    服务端发的某个short字段存到buf里是正值,存完在看就是0的问题
    生成函数&多项式全家桶导学案
    [Z]董的博客数据结构与算法汇总
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/8688467.html
Copyright © 2020-2023  润新知