Python读写xml文件_python xml读写保留编码-程序员宅基地

技术标签: python  xml  

问题背景:

用Python写读写xml文件的代码,目的是修改第一个book节点中price节点的值并保存。xml举例如下:

<?xml version="1.0" encoding="utf-8">
<library>
    <book1>
        <name>book1</name>
        <price>1</price>
        <author>book1.author</author>
    </book1>
    <book2>
        <name>book2</name>
        <price>2</price>
        <author>book2.author</author>
    </book2>
    <book3>
        <name>book3</name>
        <price>3</price>
        <author>book3.author</author>
    </book3>
</library>

问题描述

用Python写的读写xml文件的代码如下所示,

import os
import xml.etree.ElementTree as ET

file_path=r'test.xml'

tree=ET.ElementTree(file=file_path)
sub=tree.find('library').find('book1').find('price')
prices=[2, 3, 4, 5]
for price in prices:
    sub.test=str(price)
    tree.write(file_path, encoding="utf-8")

能正常的循环修改price的值,但是会删掉xml里的第一行声明,运行完代码后xml如下所示

<library>
    <book1>
        <name>book1</name>
        <price>5</price>
        <author>book1.author</author>
    </book1>
    <book2>
        <name>book2</name>
        <price>2</price>
        <author>book2.author</author>
    </book2>
    <book3>
        <name>book3</name>
        <price>3</price>
        <author>book3.author</author>
    </book3>
</library>

原因分析:

在tree.write中加入xml_declaration=True即可,因为默认是False的。


解决方案:

修改后的代码如下所示

import os
import xml.etree.ElementTree as ET

file_path=r'test.xml'

tree=ET.ElementTree(file=file_path)
sub=tree.find('library').find('book1').find('price')
prices=[2, 3, 4, 5]
for price in prices:
    sub.test=str(price)
    tree.write(file_path, encoding="utf-8", xml_declaration=True)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41320406/article/details/127101468

智能推荐

MDP(Markov Decision Processes马可夫决策过程)简介 -说的比较清楚-程序员宅基地

文章浏览阅读4.2k次,点赞8次,收藏81次。前面好几篇文章都在介绍强化学习(RL),以及强化学习的一些具体算法,但是强化学习中用到的最重要的理论MDP却还没提到。这篇文章就来说说MDP。讲MDP的文章和资料非常多,理论和数学公式也能轻易找到,所以本文并不是要严谨地推导MDP,而是想让读者感性地认识MDP以及它对强化学习的重要性。本文主要的参考资料来自于David Silver 教授(DeepMind 的创始人)在UCL的课程以及Rich..._mdp

服务器组件-程序员宅基地

文章浏览阅读179次。内存是计算机系统中的主要系统内存,用于存储正在运行的程序和数据。系统内存的大小也以兆字节(MB)或千兆字节(GB)来衡量,它影响到计算机的整体性能,特别是在处理多任务、大规模数据和复杂计算任务时。:显存是位于显卡上的专用内存,用于存储图形和图像数据,以便显卡能够快速访问和处理这些数据。显存的大小通常以兆字节(MB)或千兆字节(GB)来衡量,它直接影响到显卡的性能,尤其是在处理复杂图形任务时。不同类型的服务器(例如Web服务器、数据库服务器、游戏服务器等)可能需要不同的硬件组件来满足其特定的需求。_服务器组件

[蓝桥杯][基础练习VIP]高精度加法/大数加法_n个大数加法 高精度 逆序相加-程序员宅基地

文章浏览阅读172次。[蓝桥杯][基础练习VIP]高精度加法时间限制: 1Sec 内存限制: 128MB 提交: 1845 解决: 705题目描述输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数..._n个大数加法 高精度 逆序相加

谷歌浏览器中设置控件video的currentTime无效_video currenttime-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏2次。在网页中实现视频课程功能,重点是要能够保存用户的观看进度。比如,用户观看一个视频,这个视频看到2秒,这时用户离开此页面,下次打开这个视频,这个视频就要从2秒开始播放。_video currenttime

java: 错误: 不支持发行版本 5(快速解决办法)-程序员宅基地

文章浏览阅读1.7w次,点赞11次,收藏26次。报错的原因:通俗解释:本地的JDK版本和IDEA默认的JDK不匹配三、解决办法:把这个默认使用的JDK5版本改成我们当前使用的JDK的版本就好了。在maven web项目上面要部署运行tomcat时候,会出现这个问题。(1)官方解释:这个错误消息表明你正在使用的Java版本过低,不能支持程序的运行。具体来说,你正在使用的版本是5,而程序需要更高版本的Java才能运行。建议更新Java到较新版本,以确保程序能够运行_java: 错误: 不支持发行版本 5

课堂上,教师如何有效提问?-程序员宅基地

文章浏览阅读379次,点赞5次,收藏10次。问题是学习的先导,教师的有效提问能够激发学生的学习兴趣,调动学生积极思考,当提问指向疑惑处、关键处和思考处时,既为学生指明思考的方向,提供思考的空间,又能引发学生深入思考,提升学习的深度和广度。在《摸球游戏》一课的教学中,一位男生连着6次都摸出了黄球(盒内装有形状、大小相同,质量相等的球,每次摸球都摇匀再摸),学生一片欢呼,都认为他再次摸出的一定也是黄球。聚焦学生的思考处,教师通过提问引发学生深度思考,不仅帮助学生充分利用已有的旧知来学习新知,而且使学生学会学习,有利于学生在今后的数学学习中进行运用。

随便推点

系统是什么_胀观系统-程序员宅基地

文章浏览阅读909次。英文中系统(system)一词来源于古代希腊文(systεmα)意为部分组成的整体。系统的定义应该包含一切系统所共有的特性。一般系统论创始人贝塔朗菲定义:“系统是相互联系相互作用的诸元素的综合体”。这个定义强调元素间的相互作用以及系统对元素的整合作用。可以表述为:定义如果对象集S满足下列两个条件:(1)S中至少包含两个不同元素;(2)S中的元素按一定方式相互联系;则称S为一个系统,S的元素为系统的组分。这个定义指出了系统的三个特性:一是多元性,系统是多样性的统一,差异性的统一;二是相关性,_胀观系统

ERP系统简介-程序员宅基地

文章浏览阅读5.3k次,点赞5次,收藏16次。ERP系统是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。它是从MRP(物料需求计划)发展而来的新一代集成化管理信息系统,它扩展了MRP的功能,其核心思想是供应链管理。它跳出了传统企业边界,从供应链范围去优化企业的资源。ERP系统集信息技术与先进管理思想于一身,成为现代企业的运行模式,反映时代对企业合理调配资源,最大化地创造社会财富的要求,成为企业在信息_erp

关系型数据库与图数据库比较_关系型数据库 图数据库-程序员宅基地

文章浏览阅读2.2k次。关系型数据库与图数据库比较关系型数据库是基于实体建模理念设计。 该设计理念并没有提供对这些实体间关系的直接支持。 在需要描述这些实体之间的关系时,我们常常需要创建一个关联表以记录这些数据之间的关联关系,而且这些关联表常常不用来记录除外键之外的其它数据。也就是说,这些关联表也仅仅是通过关系型数据库所已有的功能来模拟实体之间的关系。 这种模拟导致了两个非常糟糕的结果:数据库需要通过关联表间接地维护实..._关系型数据库 图数据库

proxy的理解及proxy为什么可以监听数组?_proxy为什么能监听数组变化-程序员宅基地

文章浏览阅读1w次,点赞12次,收藏13次。vue3.0发布后,在双向数据绑定这里,使用proxy代替了object.defineProperty,众所周知,obj.defineProperty是对对象属性监听,循环对象,一个个属性监听,proxy是对一整个对象进行监听。而proxy的一大优势就是可以监听数组。此帖用来记录自己对proxy的调研理解。1,proxy的基本理解proxy是es6中的语法,最为代理的功能,当外接要访问对象的时候,proxy可以做一层拦截,并且可以对这个proxy代理进行操作,进而实现对对象的操作。如:var prox_proxy为什么能监听数组变化

机械革命电脑MyApp安装包_my app电脑版-程序员宅基地

文章浏览阅读3.3w次。下载地址_my app电脑版

Python-DDoS攻击_怎么用python给tcp协议的ip和端口做ddos-程序员宅基地

文章浏览阅读7.4k次,点赞7次,收藏74次。背景:网络传输层中,一般采用TCP协议,如果要建立连接,客户端会先发送syn包请求,服务器接收,接收后,再传递给客户端ack,syn包,这个时候,客户端再次回应,传回ack包。可是问题就出在,如果我是客户端,只发送一个请求syn包,然后第三次握手的时候,不再往回传ack包,此时服务端是不是就要等待?在等待的时间里,我是不是可以伪造更多的请求,从而不断消耗服务器的资源,..._怎么用python给tcp协议的ip和端口做ddos

推荐文章

热门文章

相关标签