最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python批量壓縮和解壓文件的操作指南

 更新時間:2025年11月17日 09:17:51   作者:愛分享的飄哥  
你的工作生活中,是不是也經常遇到這些令人抓狂的場景:團隊協(xié)作分發(fā)資料,一個幾百MB的文件需要同事挨個下載,不僅效率奇低,還占用大量網絡帶寬,今天,我將手把手教你如何打造一個Python文件傳輸神器,如何使用Python批量壓縮和解壓文件,需要的朋友可以參考下

你的工作生活中,是不是也經常遇到這些令人抓狂的場景?

團隊協(xié)作分發(fā)資料,一個幾百MB的文件需要同事挨個下載,不僅效率奇低,還占用大量網絡帶寬。
上傳云盤備份照片,看著進度條龜速前進,仿佛回到撥號上網時代。

面對這些重復且耗時的文件批量壓縮和文件解壓任務,你是不是也想告別手動壓縮,尋找一個更智能、更高效的Python辦公自動化解決方案?

今天,我將手把手教你如何打造一個Python文件傳輸神器,讓你:

  • Python文件壓縮: 一鍵打包,讓文件秒變??!
  • Python文件解壓: 快速還原,讓文件傳輸更流暢!

Python一鍵讓你的文件瞬間瘦身并快速還原,從此告別傳輸難題!

1. 文件“瘦身”利器:Python批量壓縮,一鍵打包,文件秒變??!

處理大文件傳輸最直接的方法就是文件壓縮。Python能幫你把整個文件夾甚至指定文件,快速打包成一個體積更小的.zip壓縮包,讓你的文件秒變小,傳輸更流暢!

功能:

  • 批量壓縮文件夾: 將整個項目目錄及其所有子文件,一鍵打包成一個zip文件。
  • 智能選擇文件: 你甚至可以控制只壓縮特定類型的文件。
  • 解決思路: Python內置的zipfile庫,就是你的最佳批量打包文件工具,無需安裝第三方庫,就能實現(xiàn)高效的Python文件壓縮。
import os
import zipfile

def compress_folder_to_zip(source_folder_path, output_zip_path, include_file_types=None):
    """
    批量壓縮指定文件夾及其所有內容到一個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內部路徑
                    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能幫你一鍵解壓,快速還原所有內容,讓你的文件傳輸流程更加流暢!

主要功能:

  • 批量解壓縮: 快速將.zip包解壓到指定位置,包括內部的文件夾結構。
  • 處理多種壓縮包: 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) # 解壓所有內容
        print(f"? 解壓成功!所有文件已解壓到:{target_folder_path}")
    except Exception as e:
        print(f"? 解壓失敗:{e}")

if __name__ == "__main__":
    # --- 請修改為你的實際zip文件路徑和目標解壓路徑 ---
    # 假設你已經運行了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. 總結與展望:你的文件傳輸從此“飛”起來!

恭喜你!通過本篇文章,你已經成功掌握了Python文件管理的兩大核心魔法——文件批量壓縮和文件解壓!我們從文件太大難傳輸?shù)耐袋c出發(fā),學會了:

  • Python文件壓縮: 利用Python實現(xiàn)批量打包文件,讓你的大文件傳輸變得輕松流暢。
  • Python文件解壓: 運用Python實現(xiàn)文件解壓,快速還原,告別等待。

現(xiàn)在,你不再需要擔心大文件發(fā)送不出去,也不用忍受漫長的傳輸和解壓過程。你擁有了一個強大的職場效率加速器,能夠讓你的文件秒變小,傳輸更流暢!

你平時都是用什么方法壓縮文件的?你最希望Python在文件傳輸方面還能幫你實現(xiàn)哪些功能?比如自動上傳到云盤?或者與郵件發(fā)送集成?

以上就是Python批量壓縮和解壓文件的操作指南的詳細內容,更多關于Python批量壓縮和解壓文件的資料請關注腳本之家其它相關文章!

相關文章

  • Python如何從列表中刪除相鄰和不相鄰的相同元素

    Python如何從列表中刪除相鄰和不相鄰的相同元素

    這篇文章主要介紹了Python如何從列表中刪除相鄰和不相鄰的相同元素問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python性能調優(yōu)的十個小技巧總結

    Python性能調優(yōu)的十個小技巧總結

    大家好,今天這篇文章關于Python性能調優(yōu)的10個小技巧,每天花5-10分鐘閱讀我的文章,對你技術提升一定會有幫助。喜歡記得收藏以防迷路
    2021-11-11
  • 基于Flask框架添加多個AI模型的API并進行交互

    基于Flask框架添加多個AI模型的API并進行交互

    這篇文章主要介紹了如何基于 Flask 框架開發(fā) AI 模型 API 管理系統(tǒng),允許用戶添加、刪除不同 AI 模型的 API 密鑰,感興趣的可以了解下
    2025-03-03
  • Matplotlib實戰(zhàn)之百分比柱狀圖繪制詳解

    Matplotlib實戰(zhàn)之百分比柱狀圖繪制詳解

    百分比堆疊式柱狀圖是一種特殊的柱狀圖,可以用于可視化比較不同類別或組的百分比或比例的圖表,下面我們就來介紹一下如何使用Matplotlib繪制百分比柱狀圖,需要的可以參考下
    2023-08-08
  • python:解析requests返回的response(json格式)說明

    python:解析requests返回的response(json格式)說明

    這篇文章主要介紹了python:解析requests返回的response(json格式)說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Pandas DataFrame數(shù)據的更改、插入新增的列和行的方法

    Pandas DataFrame數(shù)據的更改、插入新增的列和行的方法

    這篇文章主要介紹了Pandas DataFrame數(shù)據的更改、插入新增的列和行的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • 使用Python paramiko模塊利用多線程實現(xiàn)ssh并發(fā)執(zhí)行操作

    使用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)鼠標鍵盤控制功能

    使用 python pyautogui實現(xiàn)鼠標鍵盤控制功能

    pyautogui是一個可以控制鼠標和鍵盤的python庫,類似的還有pywin32。這篇文章主要介紹了python中的pyautogui實現(xiàn)鼠標鍵盤控制功能,需要的朋友可以參考下
    2019-08-08
  • python修改和新增字典中鍵值對的2種方法

    python修改和新增字典中鍵值對的2種方法

    這篇文章主要給大家介紹了關于python修改和新增字典中鍵值對的2種方法,在Python中字典是一系列鍵值對,每個鍵都與一個值相關聯(lián),與鍵相關聯(lián)的值可以是數(shù)、字符串、列表乃至字典,需要的朋友可以參考下
    2023-07-07
  • 簡單了解Python讀取大文件代碼實例

    簡單了解Python讀取大文件代碼實例

    這篇文章主要介紹了簡單了解Python讀取大文件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

斗六市| 富民县| 绍兴县| 渝北区| 邯郸县| 云浮市| 泗洪县| 农安县| 攀枝花市| 高州市| 凭祥市| 托克托县| 抚宁县| 丰镇市| 南阳市| 沐川县| 温宿县| 扬州市| 会泽县| 曲水县| 蚌埠市| 密山市| 丰镇市| 金昌市| 长春市| 林芝县| 焦作市| 信宜市| 乌兰察布市| 荣成市| 滨州市| 平和县| 营口市| 龙门县| 施秉县| 安国市| 陇南市| 金塔县| 宁津县| 林芝县| 迁安市|