歡迎來到我們的系列博客《Python全景系列》!在這個系列中,我們將帶領你從Python的基礎知識開始,一步步深入到高級話題,幫助你掌握這門強大而靈活的編程語言!
本文系列第四篇,介紹史上最全PYTHON檔案型別讀寫庫大盤點!包含常用和不常用的大量檔案格式!文本、音頻、視頻應有盡有!廢話不多說!走起來!
先給大家快捷總結:
| 檔案格式 | Python庫 |
|---|---|
| 文本檔案 | 內置open函式 |
| CSV檔案 | csv |
| JSON檔案 | json |
| XML檔案 | xml.etree.ElementTree |
| 二進制檔案 | 內置open函式 |
| 圖片檔案 | PIL (Python Imaging Library) |
| Word檔案 | python-docx |
| XLSX檔案 | openpyxl |
| PDF檔案 | PyPDF2 |
| SQLite資料庫檔案 | sqlite3 |
| 音頻檔案 | pydub |
| 視頻檔案 | moviepy |
| HTML檔案 | BeautifulSoup |
| YAML檔案 | pyyaml |
| ZIP檔案 | zipfile |
正文開始!
1. 文本檔案
在Python中,處理文本檔案是最基礎的檔案操作,我們使用內置的open函式打開一個檔案,然后使用檔案物件的read或write方法進行讀寫操作,
# 寫入文本檔案
with open('example.txt', 'w') as f:
f.write('Hello, Python!')
# 讀取文本檔案
with open('example.txt', 'r') as f:
print(f.read())
在這里,open函式的第一個引數是檔案名,第二個引數是檔案模式,其中'r'代表讀模式,'w'代表寫模式,使用'with'陳述句可以確保檔案在操作完成后被正確關閉,這是一個標準的檔案操作模式,也適用于其他型別的檔案,
2. CSV檔案
CSV(Comma-Separated Values)檔案是一種常用的資料交換格式,每行表示一條記錄,各欄位之間由逗號分隔,Python的csv模塊提供了用于讀寫CSV檔案的工具,
import csv
# 寫入CSV檔案
with open('example.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['name', 'age'])
writer.writerow(['Alice', 20])
writer.writerow(['Bob', 25])
# 讀取CSV檔案
with open('example.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
這里,csv.writer和csv.reader函式分別回傳一個寫入器和讀取器物件,我們可以使用這些物件進行CSV檔案的讀寫操作,
3. JSON檔案
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,易于閱讀和撰寫,同時也易于機器決議和生成,Python的json模塊提供了用于讀寫JSON檔案的工具,
import json
# 寫入JSON檔案
data =https://www.cnblogs.com/xfuture/archive/2023/05/18/ {
'name': 'Alice',
'age': 20,
}
with open('example.json', 'w') as f:
json.dump(data, f)
# 讀取JSON檔案
with open('example.json', 'r') as f:
data = json.load(f)
print(data)
在這里,json.dump和json.load函式分別用于將Python物件轉換為JSON格式并寫入檔案,以及從檔案中讀取JSON資料并轉換為Python物件,
4. XML檔案
XML(eXtensible Markup Language)是一種標記語言,可以用來描述資料的結構,Python的xml模塊提供了用于讀寫XML檔案的工具,
from xml.etree import ElementTree as ET
# 寫入XML檔案
root = ET.Element('root')
child = ET.Element('child')
child.text = 'Hello, Python!'
root.append(child)
tree = ET.ElementTree(root)
tree.write('example.xml')
# 讀取XML檔案
tree = ET.parse('example.xml')
root = tree.getroot()
for child in root:
print(child.text)
在這里,我們使用xml.etree.ElementTree模塊創建一個XML檔案的樹形結構,然后使用ElementTree物件的write方法將其寫入檔案,讀取XML一個ElementTree物件,然后通過遍歷這個物件來讀取XML資料,
5.二進制檔案
二進制檔案是直接包含二進制資料的檔案,例如影像檔案、音頻檔案等,Python使用'b'模式打開二進制檔案,然后使用檔案物件的read或write方法進行讀寫操作,
# 寫入二進制檔案
data = https://www.cnblogs.com/xfuture/archive/2023/05/18/b'Hello, Python!'
with open('example.bin', 'wb') as f:
f.write(data)
# 讀取二進制檔案
with open('example.bin', 'rb') as f:
data = f.read()
print(data)
在這里,'wb'和'rb'分別代表二進制寫模式和二進制讀模式,注意我們使用bytes型別的資料進行二進制寫操作,
6. 圖片檔案
處理圖片檔案一般需要借助第三方庫,如PIL(Python Imaging Library),
from PIL import Image
# 讀取圖片檔案
img = Image.open('example.jpg')
# 修改圖片
img = img.rotate(45) # 旋轉45度
# 寫入圖片檔案
img.save('example_rotated.jpg')
這里,Image.open和Image.save函式分別用于讀取和保存圖片檔案,PIL庫提供了豐富的影像處理功能,例如旋轉、裁剪、縮放等,
7. Word檔案
處理Word檔案,我們可以使用python-docx庫,這是一個創建、修改和提取Microsoft Word檔案的Python庫,
from docx import Document
# 創建新的Word檔案
doc = Document()
doc.add_paragraph('Hello, Python!')
doc.save('example.docx')
# 讀取Word檔案
doc = Document('example.docx')
for para in doc.paragraphs:
print(para.text)
在這里,我們首先創建一個Document物件,然后使用add_paragraph方法添加段落,最后使用save方法保存檔案,讀取Word檔案時,我們遍歷Document物件的paragraphs屬性,列印出每個段落的文本,
8. XLSX檔案
處理Excel檔案,我們可以使用openpyxl庫,這是一個讀寫Excel 2010 xlsx/xlsm/xltx/xltm檔案的Python庫,
from openpyxl import Workbook, load_workbook
# 創建新的Excel檔案
wb = Workbook()
ws = wb.active
ws['A1'] = 'Hello,'
ws['B1'] = 'Python!'
wb.save('example.xlsx')
# 讀取Excel檔案
wb = load_workbook('example.xlsx')
ws = wb.active
print(ws['A1'].value, ws['B1'].value)
在這里,我們首先創建一個Workbook物件和Worksheet物件,然后使用字典方式訪問單元格并賦值,最后使用save方法保存作業簿,讀取Excel檔案時,我們使用load_workbook函式加載作業簿,然后訪問激活的作業表的單元格,
9. PDF檔案
PDF是一種常見的檔案格式,我們可以使用Python的PyPDF2庫來處理PDF檔案,
import PyPDF2
# 讀取PDF檔案
with open('example.pdf', 'rb') as f:
reader = PyPDF2.PdfFileReader(f)
page = reader.getPage(0)
print(page.extractText())
# 注意:PyPDF2不能直接創建PDF檔案,但可以合并、裁剪和旋轉PDF檔案
在這里,我們使用PdfFileReader物件讀取PDF檔案,然后使用getPage方法獲取某一頁,最后使用extractText方法提取文本,注意PyPDF2不能直接創建PDF檔案,但可以合并、裁剪和旋轉PDF檔案,
10. SQLite資料庫檔案
SQLite是一種嵌入式資料庫,它的資料庫全都保存在一個單獨的檔案中,Python的sqlite3模塊提供了對SQLite資料庫的支持,
import sqlite3
# 創建并寫入SQLite資料庫
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("CREATE TABLE test (name text, age integer)")
c.execute("INSERT INTO test VALUES ('Alice', 20)")
conn.commit()
conn.close()
# 讀取SQLite資料庫
conn = sqlite3.connect('example.db')
c = conn.cursor()
for row in c.execute("SELECT * FROM test"):
print(row)
conn.close()
在這里,我們首先創建一個資料庫連接和游標物件,然后使用execute方法執行SQL陳述句,最后使用commit方法提交事務,讀取SQLite資料庫時,我們遍歷execute方法的結果,列印出每一行,
11. 音頻檔案
處理音頻檔案,我們可以使用pydub庫,這是一個處理音頻的Python庫,
from pydub import AudioSegment
# 讀取音頻檔案
audio = AudioSegment.from_file('example.mp3')
# 修改音頻
audio = audio.reverse() # 反轉音頻
# 保存音頻檔案
audio.export('example_reversed.mp3', format='mp3')
在這里,AudioSegment.from_file函式用于讀取音頻檔案,pydub庫提供了豐富的音頻處理功能,例如反轉、裁剪、合并等,最后使用export方法保存音頻檔案,
12. 視頻檔案
處理視頻檔案,我們可以使用moviepy庫,這是一個用于視頻編輯的Python庫,
from moviepy.editor import VideoFileClip
# 讀取視頻檔案
clip = VideoFileClip('example.mp4')
# 修改視頻
clip = clip.subclip(10, 20) # 截取第10秒到第20秒的片段
# 保存視頻檔案
clip.write_videofile('example_subclip.mp4')
在這里,VideoFileClip函式用于讀取視頻檔案,moviepy庫提供了豐富的視頻處理功能,例如裁剪、拼接、添加音頻等,最后使用write_videofile方法保存視頻檔案,
13. HTML檔案
HTML是網頁的主要構成元素,我們可以使用Python的beautifulsoup庫決議HTML檔案,
from bs4 import BeautifulSoup
# 讀取HTML檔案
with open('example.html', 'r') as f:
soup = BeautifulSoup(f, 'html.parser')
# 決議HTML
print(soup.title.text) # 列印標題
# 注意:BeautifulSoup不能直接創建HTML檔案,但可以修改HTML檔案
在這里,我們使用BeautifulSoup物件決議HTML檔案,然后通過標簽名訪問HTML元素,
14. YAML檔案
YAML(YAML Ain't Markup Language)是一種直觀的資料序列化格式,常用于組態檔,Python的pyyaml庫提供了用于讀寫YAML檔案的工具,
import yaml
# 寫入YAML檔案
data = https://www.cnblogs.com/xfuture/archive/2023/05/18/{'name': 'Alice', 'age': 20}
with open('example.yaml', 'w') as f:
yaml.dump(data, f)
# 讀取YAML檔案
with open('example.yaml', 'r') as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
在這里,yaml.dump和yaml.load函式分別用于將Python物件轉換為YAML格式并寫入檔案,以及從檔案中讀取YAML資料并轉換為Python物件,
15. ZIP檔案
ZIP是一種常用的壓縮檔案格式,Python的zipfile模塊提供了用于讀寫ZIP檔案的工具,
from zipfile import ZipFile
# 創建ZIP檔案
with ZipFile('example.zip', 'w') as zf:
zf.write('example.txt')
# 讀取ZIP檔案
with ZipFile('example.zip', 'r') as zf:
print(zf.namelist())
在這里,我們使用ZipFile物件創建一個ZIP檔案,然后使用write方法添加檔案,讀取ZIP檔案時,我們使用namelist方法列出所有檔案,
One More Thing
在處理檔案時,一個常被忽視但又極其有用的技巧是使用Python的pathlib模塊來處理檔案路徑,pathlib模塊提供了一種面向物件的方式來處理檔案和目錄路徑,使得路徑的處理變得更加直觀和簡潔,
from pathlib import Path
# 創建Path物件
p = Path('example.txt')
# 檢查檔案是否存在
if p.exists():
print('File exists.')
# 獲取檔案的后綴名
print(p.suffix)
在這個例子中,我們使用Path物件表示一個檔案路徑,然后使用Path物件的方法和屬性來進行各種操作,例如檢查檔案是否存在,獲取檔案的后綴名等,這是一個非常強大且易用的模塊,可以極大地提高我們處理檔案路徑的效率,
以上就是Python全檔案格式輸入輸出的介紹,希望通過本文,你能夠對Python的檔案操作有更深入的理解,并能夠在實際編程中靈活運用,如果你有任何問題或想法,歡迎在評論區留言分享,
【第一時間獲得Python全視角更新資訊,請關注本人微信公眾號: Python全視角】轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552809.html
標籤:其他
下一篇:返回列表
