Python读取ini、XML文件

Python 学习笔记 https://www.jianshu.com/nb/49026514

引言

ini文件常见于配置文件操作,在接口自动化测试中常用于读取配置文件、Xml文件常见于前端读取,在Selenium自动化测试中使用较为常见。本文分享如何写入、如何读取ini和XML文件。

新建ini文件

思路步骤

  • 先构建一个对象,新增一个section ,增加key-value键值对
  • 再新增一个section,但不加key-value键值对
  • 写入文件
# 导入模块
import configparser

# 先构建一个对象
config = configparser.ConfigParser()

# 新增一个section
config.add_section("早安阳光")

# 增加key-value键值对
config.set('早安阳光', '职业', '测开')
config.set('早安阳光', '爱好', '咖啡')
config.set('早安阳光', '精神', '永不言弃')

# 再新增一个section,但不加key-value键值对
config.add_section("花自飞")

# 写入文件
with open("qianye.ini", 'w') as configfile:
    config.write(configfile)
写入文件.jpg

读取ini文件

  • 获取它所有的section对象
  • 获取section下所有的options
  • 根据sections和options获取对应的value值
# -*- coding: utf-8 -*-
# @Time : 2021/3/2 17:56
# @File : Learn_ini.py
# @Author : Yvon_早安阳光

# 导入模块
import configparser

# 先构建一个对象
config = configparser.ConfigParser()
# 新增一个section
config.add_section("早安阳光")
# 增加key-value键值对
config.set('早安阳光', '职业', '测开')
config.set('早安阳光', '爱好', '咖啡')
config.set('早安阳光', '精神', '永不言弃')

# 再新增一个section,但不加key-value键值对
config.add_section("花自飞")

# 写入文件
with open("qianye.ini", 'w') as configfile:
    config.write(configfile)

#获取它所有的section对象
sections = config.sections()
# print(sections)

# 获取section下所有的options
for sec in sections:
    print('主键查询 %s' % sec)
    options = config.options(sec)
    print('value值1 %s'% options)

#根据sections和options获取对应的value值
for sec in sections:
    print('主键查询 %s' % sec)
    options = config.options(sec)
    print('value值1 %s'% options)
    for option in config.options(sec):
        print("[%s] %s=%s" %(sec,option,config.get(sec, option)))
查询结果.jpg

读取XMl文件

XML.jpg
  • 方法1: DOM(Document Object Model) 将XML数据在内存中解析成一个树,通过对树的操作来操作XML。
  • 方法2: SAX (simple API for XML ) python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
  • 方法3: ElementTree(元素树) ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
# -*- coding: utf-8 -*-
# @Time : 2021/3/3 15:46
# @File : test_XML.py
# @Author : Yvon_早安阳光

from xml.etree import ElementTree  #引入ElementTree的包

#小说的类
class Novel:
    #定义初始化属性,和xml文件属性相同
    def __init__(self,name=None,author=None,age=None,price=None):
        self.name=name
        self.author = author
        self.age = age
        self.price=price
    def __str__(self):  #转化为字符串输出
        return self.name+":"+self.author+":"+self.age+":"+"self.price"

roota=ElementTree.parse("books.xml") #parse方法读取xml文件,得到元素树
books=[]   #定义一个集合
for story in bk:   #对得到的所有的根元素下的子标签循环输出
    book=books()   #定义一个类对象
    book.name=story.find("name").text #对象的相应标签值=子标签查找到的固定标签名,并以text形式输出
    book.author = story.find("author").text
    book.age = story.find("age").text
    book.price=story.find("price").text
    books.append(book)  #将得到的属性值追加到定义的集合中

if __name__ == "__main__":
    for i in books:  # 遍历集合
        print("小说名、作者、年龄、价格 %s" %i)
XML读取结果.jpg

推荐阅读更多精彩内容