Python批量壓縮和解壓文件的操作指南
你的工作生活中,是不是也經(jīng)常遇到這些令人抓狂的場景?
團隊協(xié)作分發(fā)資料,一個幾百MB的文件需要同事挨個下載,不僅效率奇低,還占用大量網(wǎng)絡帶寬。
上傳云盤備份照片,看著進度條龜速前進,仿佛回到撥號上網(wǎng)時代。

面對這些重復且耗時的文件批量壓縮和文件解壓任務,你是不是也想告別手動壓縮,尋找一個更智能、更高效的Python辦公自動化解決方案?
今天,我將手把手教你如何打造一個Python文件傳輸神器,讓你:
- Python文件壓縮: 一鍵打包,讓文件秒變?。?/li>
- Python文件解壓: 快速還原,讓文件傳輸更流暢!

Python一鍵讓你的文件瞬間瘦身并快速還原,從此告別傳輸難題!
1. 文件“瘦身”利器:Python批量壓縮,一鍵打包,文件秒變??!
處理大文件傳輸最直接的方法就是文件壓縮。Python能幫你把整個文件夾甚至指定文件,快速打包成一個體積更小的.zip壓縮包,讓你的文件秒變小,傳輸更流暢!
功能:
- 批量壓縮文件夾: 將整個項目目錄及其所有子文件,一鍵打包成一個zip文件。
- 智能選擇文件: 你甚至可以控制只壓縮特定類型的文件。
- 解決思路: Python內(nèi)置的zipfile庫,就是你的最佳批量打包文件工具,無需安裝第三方庫,就能實現(xiàn)高效的Python文件壓縮。
import os
import zipfile
def compress_folder_to_zip(source_folder_path, output_zip_path, include_file_types=None):
"""
批量壓縮指定文件夾及其所有內(nèi)容到一個zip文件。
這是高效的Python文件壓縮方法,實現(xiàn)批量打包文件。
:param source_folder_path: 要壓縮的源文件夾路徑
:param output_zip_path: 輸出zip文件的完整路徑 (例如 "project_archive.zip")
:param include_file_types: 可選列表,只壓縮指定擴展名的文件 (如 ['.jpg', '.pdf'])
"""
if not os.path.exists(source_folder_path):
print(f"? 源文件夾不存在:{source_folder_path}")
return
# 確保輸出目錄存在
os.makedirs(os.path.dirname(output_zip_path), exist_ok=True)
print(f"?? 正在壓縮文件夾:'{source_folder_path}' 到 '{output_zip_path}'...")
try:
with zipfile.ZipFile(output_zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
# os.walk() 遍歷文件夾及其子文件夾和文件
for root, dirs, files in os.walk(source_folder_path):
# 計算當前文件在zip文件中的相對路徑
relative_path = os.path.relpath(root, source_folder_path)
for file in files:
file_path = os.path.join(root, file)
# 檢查文件類型是否在需要包含的列表中
if include_file_types and os.path.splitext(file.lower())[1] not in include_file_types:
print(f" ?? 跳過文件(類型不符):{file}")
continue
# 將文件添加到zip文件,使用相對路徑作為zip內(nèi)部路徑
zf.write(file_path, os.path.join(relative_path, file))
# 獲取壓縮前后文件大小,進行直觀對比
original_size_bytes = sum(os.path.getsize(os.path.join(r, f)) for r, d, fs in os.walk(source_folder_path) for f in fs)
compressed_size_bytes = os.path.getsize(output_zip_path)
original_size_mb = original_size_bytes / (1024 * 1024)
compressed_size_mb = compressed_size_bytes / (1024 * 1024)
savings_percentage = ((original_size_bytes - compressed_size_bytes) / original_size_bytes) * 100 if original_size_bytes > 0 else 0
print(f"? 壓縮成功!")
print(f" 原始總大小: {original_size_mb:.2f} MB")
print(f" 壓縮后大小: {compressed_size_mb:.2f} MB")
print(f" 節(jié)省空間: {savings_percentage:.2f}%")
except Exception as e:
print(f"? 壓縮失敗:{e}")
if __name__ == "__main__":
# --- 請修改為你的實際文件夾路徑 ---
source_folder_path = os.path.expanduser("~/Desktop/我的項目資料")
output_zip_path = os.path.expanduser("~/Desktop/項目資料_歸檔.zip")
# 確保源文件夾存在并有測試文件,可以創(chuàng)建一些子文件夾和文件
os.makedirs(source_folder_path, exist_ok=True)
# 示例:創(chuàng)建一些測試文件用于壓縮
with open(os.path.join(source_folder_path, "report.txt"), "w") as f: f.write("Hello World\n" * 5000)
with open(os.path.join(source_folder_path, "image.jpg"), "w") as f: f.write("binary data" * 100000)
os.makedirs(os.path.join(source_folder_path, "subfolder"), exist_ok=True)
with open(os.path.join(source_folder_path, "subfolder", "data.csv"), "w") as f: f.write("1,2,3\n" * 2000)
# 示例1:壓縮整個文件夾
print("\n--- 示例1:批量壓縮整個文件夾 ---")
compress_folder_to_zip(source_folder_path, output_zip_path)
# 示例2:只壓縮特定類型的文件(如只壓縮圖片和PDF)
# print("\n--- 示例2:只壓縮圖片和PDF ---")
# compress_folder_to_zip(source_folder_path, os.path.expanduser("~/Desktop/圖片文檔.zip"), include_file_types=['.jpg', '.png', '.pdf'])
操作步驟:
準備文件夾: 在桌面創(chuàng)建一個名為我的項目資料的文件夾,放入一些不同類型的文件和子文件夾,使其總大小稍大一些(比如幾MB甚至幾十MB),以體現(xiàn)壓縮效果。
修改代碼路徑: 復制上方代碼到VS Code,保存為compress_files.py。修改 source_folder_path 和 output_zip_path 為你實際的文件夾路徑和想要保存的zip文件路徑。
運行: 在VS Code終端運行 python compress_files.py。


2. 文件“還原”利器:Python批量解壓縮,一鍵還原,輕松查看!
收到了同事發(fā)來的.zip壓縮包?或者下載了一堆打包文件?Python能幫你一鍵解壓,快速還原所有內(nèi)容,讓你的文件傳輸流程更加流暢!
主要功能:
- 批量解壓縮: 快速將.zip包解壓到指定位置,包括內(nèi)部的文件夾結(jié)構。
- 處理多種壓縮包: zipfile庫主要處理.zip格式,但未來還可以擴展支持.rar、.7z等。
- 如何實現(xiàn): zipfile庫同樣提供了簡單的API,可以批量解壓.zip文件到指定目錄。
import os
import zipfile
def extract_zip_to_folder(zip_file_path, target_folder_path):
"""
解壓縮zip文件到指定文件夾。
這是高效的Python文件解壓工具。
:param zip_file_path: 要解壓的zip文件完整路徑
:param target_folder_path: 解壓目標文件夾路徑
"""
if not os.path.exists(zip_file_path):
print(f"? Zip文件不存在:{zip_file_path}")
return
os.makedirs(target_folder_path, exist_ok=True) # 確保目標文件夾存在
print(f"?? 正在解壓 '{zip_file_path}' 到 '{target_folder_path}'...")
try:
with zipfile.ZipFile(zip_file_path, 'r') as zf:
zf.extractall(target_folder_path) # 解壓所有內(nèi)容
print(f"? 解壓成功!所有文件已解壓到:{target_folder_path}")
except Exception as e:
print(f"? 解壓失?。簕e}")
if __name__ == "__main__":
# --- 請修改為你的實際zip文件路徑和目標解壓路徑 ---
# 假設你已經(jīng)運行了2.1節(jié)的壓縮代碼,并生成了 '項目資料_歸檔.zip'
source_zip_file = os.path.expanduser("~/Desktop/項目資料_歸檔.zip")
output_extracted_folder = os.path.expanduser("~/Desktop/解壓后資料")
os.makedirs(output_extracted_folder, exist_ok=True) # 確保目標文件夾存在
extract_zip_to_folder(source_zip_file, output_extracted_folder)
操作步驟:
準備zip文件: 使用2.1節(jié)的代碼生成一個.zip文件,或者手動準備一個包含文件的.zip包。
修改代碼路徑: 修改 source_zip_file 和 output_extracted_folder 為你實際的路徑。
運行: 在VS Code終端運行 python extract_zip.py。
效果展示:

3. 總結(jié)與展望:你的文件傳輸從此“飛”起來!
恭喜你!通過本篇文章,你已經(jīng)成功掌握了Python文件管理的兩大核心魔法——文件批量壓縮和文件解壓!我們從文件太大難傳輸?shù)耐袋c出發(fā),學會了:
- Python文件壓縮: 利用Python實現(xiàn)批量打包文件,讓你的大文件傳輸變得輕松流暢。
- Python文件解壓: 運用Python實現(xiàn)文件解壓,快速還原,告別等待。
現(xiàn)在,你不再需要擔心大文件發(fā)送不出去,也不用忍受漫長的傳輸和解壓過程。你擁有了一個強大的職場效率加速器,能夠讓你的文件秒變小,傳輸更流暢!

你平時都是用什么方法壓縮文件的?你最希望Python在文件傳輸方面還能幫你實現(xiàn)哪些功能?比如自動上傳到云盤?或者與郵件發(fā)送集成?
以上就是Python批量壓縮和解壓文件的操作指南的詳細內(nèi)容,更多關于Python批量壓縮和解壓文件的資料請關注腳本之家其它相關文章!
相關文章
Python性能調(diào)優(yōu)的十個小技巧總結(jié)
大家好,今天這篇文章關于Python性能調(diào)優(yōu)的10個小技巧,每天花5-10分鐘閱讀我的文章,對你技術提升一定會有幫助。喜歡記得收藏以防迷路2021-11-11
python:解析requests返回的response(json格式)說明
這篇文章主要介紹了python:解析requests返回的response(json格式)說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Pandas DataFrame數(shù)據(jù)的更改、插入新增的列和行的方法
這篇文章主要介紹了Pandas DataFrame數(shù)據(jù)的更改、插入新增的列和行的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06
使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作
ssh是一個協(xié)議,OpenSSH是其中一個開源實現(xiàn),paramiko是Python的一個庫,實現(xiàn)了SSHv2協(xié)議(底層使用cryptography)。這篇文章主要介紹了使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作,需要的朋友可以參考下2019-12-12
使用 python pyautogui實現(xiàn)鼠標鍵盤控制功能
pyautogui是一個可以控制鼠標和鍵盤的python庫,類似的還有pywin32。這篇文章主要介紹了python中的pyautogui實現(xiàn)鼠標鍵盤控制功能,需要的朋友可以參考下2019-08-08

