python解壓縮文件或文件夾兩種常見方式(附代碼)
前言
在日常開發(fā)或數(shù)據(jù)處理工作中,我們經(jīng)常需要對文件或文件夾進行壓縮和解壓縮操作。Python 提供了強大的內(nèi)置模塊,如 zipfile
和 shutil
,可以幫助我們高效地完成這些任務(wù)。
本文將介紹如何使用 Python 對文件夾或文件進行壓縮和解壓縮,內(nèi)容包括兩種常見方式:zipfile
和 shutil
,并提供完整代碼示例。
壓縮文件或文件夾
1. 使用 zipfile 模塊壓縮文件夾
zipfile
模塊是 Python 標準庫的一部分,用于創(chuàng)建和讀取 .zip
文件。它支持精細控制文件壓縮的內(nèi)容和路徑。
以下是一個將文件夾壓縮為 .zip
文件的代碼示例:
import os import zipfile def compress_folder_to_zip(folder_path, zip_path): with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf: for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) # 添加到 ZIP 文件時,保留相對路徑 arcname = os.path.relpath(file_path, folder_path) zipf.write(file_path, arcname) print(f"壓縮完成:{zip_path}") # 示例用法 compress_folder_to_zip('path/to/folder', 'output.zip')
代碼說明:
os.walk
遍歷文件夾及其子文件夾中的所有文件。os.path.relpath
確保壓縮后的文件路徑相對于原始文件夾路徑。zipfile.ZIP_DEFLATED
指定壓縮算法。
2. 使用 shutil 模塊壓縮文件夾
如果你只需要簡單快速地將文件夾壓縮為 .zip
或 .tar
文件,可以使用 shutil
模塊。它支持多種壓縮格式,包括 zip
、tar
、gztar
等。
代碼示例如下:
import shutil def compress_with_shutil(folder_path, output_path, format='zip'): # format 支持 "zip", "tar", "gztar", "bztar", "xztar" shutil.make_archive(output_path, format, folder_path) print(f"壓縮完成:{output_path}.{format}") # 示例用法 compress_with_shutil('path/to/folder', 'output', 'zip')
代碼說明:
shutil.make_archive
方法自動完成壓縮過程,output_path
不需要包含擴展名。format
參數(shù)支持多種格式,選擇適合的壓縮格式即可。
解壓縮文件
1. 使用 zipfile 解壓 .zip 文件
使用 zipfile
模塊,我們可以解壓 .zip
文件到指定目錄:
import zipfile def extract_zip(zip_path, extract_to): with zipfile.ZipFile(zip_path, 'r') as zipf: zipf.extractall(extract_to) print(f"解壓完成:{extract_to}") # 示例用法 extract_zip('output.zip', 'path/to/extract')
代碼說明:
zipf.extractall()
會解壓縮 ZIP 文件中的所有內(nèi)容到指定路徑。- 適用于需要自定義解壓邏輯的場景。
2. 使用 shutil 解壓文件
如果文件是 .zip
格式,并且不需要復雜操作,可以使用 shutil
快速解壓:
import shutil def extract_with_shutil(zip_path, extract_to): shutil.unpack_archive(zip_path, extract_to) print(f"解壓完成:{extract_to}") # 示例用法 extract_with_shutil('output.zip', 'path/to/extract')
代碼說明:
shutil.unpack_archive
支持解壓多種格式文件,如.zip
和.tar
。- 適用于快速解壓任務(wù)。
完整示例:壓縮與解壓縮結(jié)合
以下是一個包含壓縮和解壓縮功能的完整 Python 腳本:
import os import zipfile import shutil def compress_folder(folder_path, zip_path): with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf: for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) arcname = os.path.relpath(file_path, folder_path) zipf.write(file_path, arcname) print(f"壓縮完成:{zip_path}") def decompress_folder(zip_path, extract_to): with zipfile.ZipFile(zip_path, 'r') as zipf: zipf.extractall(extract_to) print(f"解壓完成:{extract_to}") # 示例用法 if __name__ == "__main__": # 壓縮文件夾 compress_folder('path/to/folder', 'output.zip') # 解壓 ZIP 文件 decompress_folder('output.zip', 'path/to/extract')
總結(jié)
在這篇文章中,我們學習了如何使用 Python 的 zipfile
和 shutil
模塊進行文件夾和文件的壓縮與解壓縮操作:
- zipfile 模塊:適合需要精細控制的場景,如自定義壓縮路徑。
- shutil 模塊:快速完成壓縮和解壓縮,適合簡單任務(wù)。
無論你是需要對多個文件進行壓縮管理,還是希望快速解壓一個文件夾,這兩種方式都能滿足你的需求。
到此這篇關(guān)于python解壓縮文件或文件夾兩種常見方式的文章就介紹到這了,更多相關(guān)python解壓縮文件或文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3利用Dlib19.7實現(xiàn)攝像頭人臉識別的方法
這篇文章主要介紹了Python 3 利用 Dlib 19.7 實現(xiàn)攝像頭人臉識別 ,利用python開發(fā),借助Dlib庫捕獲攝像頭中的人臉,提取人臉特征,通過計算歐氏距離來和預存的人臉特征進行對比,達到人臉識別的目的,感興趣的小伙伴們可以參考一下2018-05-05使用Python編寫Prometheus監(jiān)控的方法
今天小編就為大家分享一篇關(guān)于使用Python編寫Prometheus監(jiān)控的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10python 子類調(diào)用父類的構(gòu)造函數(shù)實例
這篇文章主要介紹了python 子類調(diào)用父類的構(gòu)造函數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03matplotlib常見函數(shù)之plt.rcParams、matshow的使用(坐標軸設(shè)置)
這篇文章主要介紹了matplotlib常見函數(shù)之plt.rcParams、matshow的使用(坐標軸設(shè)置),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01