python: .xml文件 操作

.xml 读取

我的.xml文件如下:

Code

通过如下代码模板,可实现对.xml文件的信息快捷读取:

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/Retail/001.xml"

def main():

    tree = ElementTree()
    tree.parse(XML_PATH)

    # 对一级text的获取
    folder = tree.find('folder').text  # milkpowder
    filename = tree.find('filename').text  # image005.png
    path = tree.find('path').text  # ../../image005.png

    size = tree.find('size')
    size_width = size.find('width').text  # 1440
    size_height = size.find('height').text  # 1080
    size_depth = size.find('depth').text  # 3

    segmented = tree.find('segmented').text  # 0

    # 对所有object的获取
    objs = tree.findall('object')

    # 对每个子object分别进行text获取
    for idx in range(len(objs)):
        tag = objs[idx].find('name').text
        x1 = int(round(float(objs[idx].find('bndbox').find('xmin').text)))
        y1 = int(round(float(objs[idx].find('bndbox').find('ymin').text)))
        x2 = int(round(float(objs[idx].find('bndbox').find('xmax').text)))
        y2 = int(round(float(objs[idx].find('bndbox').find('ymax').text)))
        bbox = [x1, y1, x2, y2]


if __name__ == "__main__":
    main()

.xml 修改文本

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/001.xml"


def main():

    tree = ElementTree()
    tree.parse(XML_PATH)
    objs = tree.findall('object')

    # 修改 指定属性 的 文本
    objs[0].find('name').text = "Nanjing"

    # 将新的tree覆盖写入原xml文件
    tree.write(XML_PATH, encoding="utf-8")


if __name__ == "__main__":
    main()

成功将第一个“object”项的”name”属性的文本改为了“Nanjing”:

Summary

.xml文件信息的存放类似于多级的字典(dict)。 因此,通过xml.etree.ElementTree库对.xml文件信息的读取,其实就是在分级text下对指定key进行的value读取。


[1] Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏比原链

剥开比原看代码03:比原是如何监听p2p端口的

Gitee地址:https://gitee.com/BytomBlockchain/bytom

14520
来自专栏高爽的专栏

登录之记住用户与自动登录

       如题,大家在使用各种网站时,为了更好的用户体验,网站往往会提供这两种功能之一,以便下次登录方便。 ? ?        今天要讲述的是用java操...

24500
来自专栏和蔼的张星的图像处理专栏

1.Win10+VsCode的C/CPP编译环境搭建

我是从开始学C++的时候就一直用的是visual studio,毕竟宇宙第一IDE,写和调试都是超级方便快捷,唯一的缺点可能就是启动慢一点。 之前电脑没有换固...

89060
来自专栏Java帮帮-微信公众号-技术文章全总结

RabbitMQ详解解答【面试+工作】

如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不在说了)

39110
来自专栏Python、Flask、Django

Flask使用flask_login登录时报的一个错误

11620
来自专栏求索之路

Android数据层架构的实现 上篇

最近我们app的服务器吃不消了,所以我在为服务器增加缓存层之后,又想到在app端进行二级缓存以减少app对服务器的访问。我想很多app应该在项目的初期架构的时...

34080
来自专栏丑胖侠

Zookeeper开源客户端Curator之Master/Leader选举

在实际生产中,特别是分布式系统中,我们经常遇到这样的场景:一个复杂的任务,近需要从分布式机器中选出一台机器来执行。诸如此类的问题,我们统称为“Master选举”...

448100
来自专栏北京马哥教育

27个Linux文档编辑命令

? 文 | 豌豆 来源 | 菜鸟教程 ? 豌豆贴心提醒,本文阅读时间5分钟,文末有秘密! Linux col命令 Linux col命令用于过滤控制字...

51960
来自专栏从零开始学自动化测试

python笔记13-多线程实践篇(tomorrow)

前言 前面几篇连续讲解了多线程的一些概念,都是一些理论的东西,有了一些理论基础了,接下来就让我们把所学的知识用到实践中吧! ? 一、 安装 1.tomorrow...

39360
来自专栏Java3y

Hibernate面试题大全

Hibernate常见面试题 Hibernate工作原理及为什么要用? Hibernate工作原理及为什么要用? 读取并解析配置文件 读取并解析映射信息,创建...

45450

扫码关注云+社区

领取腾讯云代金券