在开发零碎的过程中,常常会用到 XML 存储和传输数据,XML 是一种用于标记电子文件使其具备结构性的标记语言,在博客中常常会见到。
JSON 是一种轻量级的数据交换格局,常被用在后端和前端的数据交互上,如你用 Python 提供后端 WebService 数据接口,App 在调用这个接口时,收到的数据就是 JSON 文件。
txt 是最常见的一种文件格式,次要存文本信息,即为文字信息,当初的操作系统大多应用记事本等程序保留,大多数软件能够查看,如记事本,浏览器等。
10.1 XML 文件
XML 指可扩大标记语言(eXtensible Markup Language)。由成对标签如 <book></book> 或闭环标签 <book/> 组成,最内部标签称为根节点。在根节点外面,能够蕴含很多子节点,子节点有本人的属性和文本。如下样例:book 为根节点,name 有本人的属性 name,author 的文本值为老陈,price 为闭环标签。
<book>
<name name="书名">12 天搞定 Python</name>
<author> 老陈 </author>
<price price="0.00 元" />
</book>
在自带的规范库中,Python 提供了大量能够用于解决 XML 语言的包和工具,经我和共事测试、比拟,发现 ElementTree 模块是最好用的,所有我举荐你也用它来解决 XML 文件。
1. 创立 XML
XML 文件,从创立节点 (book) 开始,之后创立外面的子节点,并对子节点进行属性和内容增加。
import xml.etree.ElementTree as ET
# 创立根节点
book = ET.Element("book")
# 创立子节点,并增加属性和数据
title = ET.SubElement(book, "name")
title.attrib = {"name": "书名"}
title.text = "12 天搞定 Python"
# 创立子节点,并增加数据
author = ET.SubElement(book, "author")
author.text = "老陈"
price = ET.SubElement(book, "price")
# 创立子节点,并增加数据
price.attrib = {"price": "0.00 元"}
# 创立 tree 对象,写文件
tree = ET.ElementTree(book)
tree.write("book.xml", encoding="UTF-8")
输入后果(book.xml 文件)
<book>
<name name="书名">12 天搞定 Python</name>
<author> 老陈 </author>
<price price="0.00 元" />
</book>
2. 批改 XML
批改 book.xml 文件,新增创立日期,批改 name 的属性名为 arr,价格调整为 0.01 元。
import xml.etree.ElementTree as ET
tree = ET.parse("book.xml") # 读取待批改文件
book = tree.getroot()
# 创立新节点并增加为 root 的子节点
createDate = ET.Element("createDate")
createDate.attrib = {"name": "创立日期"}
createDate.text = "2020-10-01"
book.append(createDate)
# 批改书名的属性
name = book.find("name")
name.attrib = {"name": "arr"}
# 批改价格
price = book.find("price")
price.text = "0.01 元"
# 写回原文件
tree.write("book.xml", encoding="UTF-8")
输入后果(book.xml 文件)
<book>
<name name="arr">12 天搞定 Python</name>
<author> 老陈 </author>
<price price="0.00 元">0.01 元 </price>
<createDate name="创立日期">2020-10-01</createDate>
</book>
3. 删除 XML 节点
删节点,先找到,再用 remove()办法进行删除。
import xml.etree.ElementTree as ET
tree = ET.parse("book.xml") # 读取待批改文件
book = tree.getroot()
for price in book.findall('price'):
book.remove(price)
tree.write('book.xml', encoding="UTF-8")
输入后果(book.xml 文件)
<book>
<name name="arr">12 天搞定 Python</name>
<author> 老陈 </author>
<createDate name="创立日期">2020-10-01</createDate>
</book>
- 读取 XML
循环读取节点内容,输入不为 None 的节点。
import xml.etree.ElementTree as ET
tree = ET.parse("book.xml") # 读取待批改文件
book = tree.getroot()
for node in book.iter():
if node.text is not None:
print(node.tag, ":", node.text)
好了,无关 XML 文件的内容,老陈讲完了,如果感觉对你有所帮忙,心愿老铁能转发点赞,让更多的人看到这篇文章。你的转发和点赞,就是对老陈持续创作和分享最大的激励。
10.2 JSON 文件
JSON 文件数据由一系列键值对组成并用逗号隔开和咱们学过的字典可进行化相互转换。Python 中能够应用 json 模块对 JSON 数据进行编解码。
1. 创立 JSON 文件
json.dumps()对字符串数据进行编码,json.dump()对文件数据进行编码。
import json
# 字典转换为 JSON 对象
book = {
'name': "12 天搞定 Python",
'author': '老陈',
'price': 0.00
}
# 生成 json 格局
json_str = json.dumps(book, ensure_ascii=False)
# 写入 JSON 数据
with open('book.json', 'w') as f:
json.dump(json_str, f)
输入后果(book.json 文件内容)
"{"name":"12 天搞定 Python","author":" 老陈 ","price": 0.0}"
2. 读取 JSON 文件
json.loads()对字符串数据进行解码,json.load() 对 JSON 文件进行解码。
……