51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 752|回复: 0
打印 上一主题 下一主题

[python] Python中的ini配置文件到底是什么?

[复制链接]
  • TA的每日心情
    无聊
    4 小时前
  • 签到天数: 968 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-9-6 11:15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    INI介绍
      INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置。由节(section)、键(key)、值(value)构成。在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生。
      Python中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。
      关于configparser
      在python2中该模块名为Configparser,到python3才改为configparser,该模块是用来解析ini配置文件的解析器。
      其作用就是使用模块中的RawConfigParser()、ConfigParser()、SafeConfigParser()这三个方法(任选一种),创建一个对象使用对象的方法对指定的配置文件做增删改查操作。
      本次使用的python版本为3.8,编译器使用pycharm。
      INI文件格式

    INI配置文件组成
      section
      表示一个区块,由方括号及方括号中的名称组成,section的范围为当前方括号到下一个方括号的内容,如“DEFAULT”、“select”、“connect_mysql”。
      大小写和空格检查:section中的名称在保存和获取的时候是原样保存和获取的,即大小写不一样或者空格不一样等都是不同的section。
      重复性检查:同一个配置文件中section名称不允许重复。
      option
      表示section中的配置项,由key、分隔符和value组成的键值对,如“select”下的“broswer = Chrome”。
      大小写检查:key是大小写不敏感的,保存进文件的时候会自动将key小写保存,但value是大小写敏感的。
      空格检查:通过key获取value时,会自动将文件中的key和value前后空格去掉再进行匹配,即文件中保存为'  broswer     = Chrome      '时,用'broswer'也可以获取到对应的value值'Chrome'。
      跨多行检查:key是不能跨行的,但是value可以跨行,只要第二行及之后行的缩进与第一行不同即可,一直到下一个option为止。
      重复性检查:和section一样,同一section下的key是不允许重复的。
      分隔符:可以是等号“=”或者冒号“:”。
      注释:行注释用井号“#”或者分号“;”表示,特别需要注意的是必须得是行开头(前面可以有空格),用在行中间的就不会算作是注释了。
      DEFAULT
      这是一个特殊的section,会用作其他section的option取不到值时的备用值,或者可以理解为它是一个root,其他的section都是它的子section,但不是必须提供的。
      读取配置文件
    import os
    import configparser


    conf = configparser.ConfigParser() # 类的实例化

    curpath = os.path.dirname(os.path.realpath(__file__))
    path = os.path.join(curpath,'read.ini')

    conf.read(path,encoding="utf-8")
    value = conf['select']['url']
    print("通过read方法取得的值为:",value)

    value = conf.get('login','username')
    print('通过get方法取得的值:',value)

    value = conf.items('login') # 读取一个section中的所有数据,返回一个列表
    print("通过items方法取得的值:",value)

    value = conf.getint('connect_mysql','port') # 指定读取数据的类型
    print("指定数据类型取出的值:",value)

    section = conf.sections() # 读取配置文件中所有section
    print(section)

    运行结果:

    注意:配置文件注释有中文的,在python3中要加上参数encoding="utf-8",不然会报错。
    1. conf.read(path,encoding="utf-8")
    复制代码
    写入配置文件
    import os
    import configparser


    conf = configparser.ConfigParser() # 类的实例化

    curpath = os.path.dirname(os.path.realpath(__file__))
    path = os.path.join(curpath,'read.ini')

    conf.add_section('login') # 添加一个新的section
    conf.set('login','username','admin')
    conf.set('login','password','123123')   # 往配置文件写入数据
    conf.write(open(path,'a'))  # 保存数据


    运行以后查看配置文件,可以看到新的section已经写入到文件中。
      write写入常用的两种方式,第一种是删除原文件内容,重新写入:w。
    1. conf.write(open(path,'w'))
    复制代码
    第二种是在原文件基础上继续写入内容,追加模式写入:a。
    1. conf.write(open(path,'a'))
    复制代码





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-19 13:41 , Processed in 0.073315 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表