第10天 | 12天搞定Python,文件操作(超詳細)

在開發系統的過程中,經常會用到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>

4. 讀取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)

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文件

....

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章