一、zipfile模塊簡介
Python zipfile模塊是Python自帶的一個壓縮和解壓縮文件的標準模塊。它允許你使用ZIP格式對文件進行讀取和寫入操作。zipfile模塊可以做到打包、壓縮和解壓縮文件等一系列操作。這個模塊中包含常用的函數,可以使用Python代碼輕鬆實現壓縮和解壓縮文件的操作。
二、zipfile模塊解壓縮操作
zipfile模塊提供了ZipFile類,可以創建zip文件對象。解壓縮zip文件也非常簡單,只需要實例化ZipFile類,並調用extractall()方法即可。下面是一個解壓縮zip文件的實例:
import zipfile with zipfile.ZipFile('example.zip', 'r') as zip_ref: zip_ref.extractall('example_folder')
上述代碼將會解壓example.zip文件到example_folder文件夾下。
三、zipfile模塊壓縮操作
zipfile模塊還可以創建和寫入zip文件。我們可以使用ZipFile類創建一個壓縮文件對象,通過write()方法寫入文件或文件夾。下面是一個創建和壓縮zip文件的實例:
import zipfile import os def zip_directory(directory_path, zip_path): with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zip_ref: for root, dirs, files in os.walk(directory_path): for file in files: zip_ref.write(os.path.join(root, file)) zip_directory('example_folder', 'example.zip')
上述代碼將會壓縮example_folder文件夾,並將壓縮文件保存為example.zip。
四、解決中文文件名亂碼問題
在使用zipfile模塊處理中文文件時,有時候會遇到文件名亂碼的問題。這是由於zipfile模塊默認使用的操作系統編碼為ASCII編碼,無法處理中文等非ASCII字元。我們可以通過設置ZipFile的encoding參數來解決這個問題。下面是一個解決中文文件名亂碼的實例:
import zipfile import os def zip_directory_utf8(directory_path, zip_path): with zipfile.ZipFile( zip_path, 'w', zipfile.ZIP_DEFLATED, True, 'UTF-8' ) as zip_ref: for root, dirs, files in os.walk(directory_path): for file in files: zip_ref.write( os.path.join(root, file), os.path.relpath(os.path.join(root, file), directory_path), zipfile.ZIP_DEFLATED ) zip_directory_utf8('中文文件夾', 'example.zip')
上述代碼通過設置ZipFile的encoding參數為『UTF-8』,解決了中文文件名亂碼的問題。
五、流式解壓縮
在處理大文件時,我們可以使用ZipFile.open()方法來實現流式解壓縮。這個方法可以返回一個類似於文件對象的ZipExtFile的實例對象,可以節省大量內存空間。下面是一個流式解壓縮的實例:
import zipfile with zipfile.ZipFile('example.zip') as zip_ref: with zip_ref.open('example.json') as file: print(file.read())
上述代碼將會以流式的方式打開example.zip文件並讀取example.json文件的內容。
原創文章,作者:WKSVO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/368338.html