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

Python批量解壓文件中出現(xiàn)中文亂碼的原因及解決方法

 更新時間:2023年08月21日 09:58:45   作者:布拉德特皮  
這篇文章主要給大家記一次Python批量解壓文件遇中文亂碼及解決過程,文中有詳細的圖解及代碼示例,具有一定的參考價值,需要的朋友可以參考下

前言

因為工作原因,公司提高了對項目的安全掃描水平,所以最近在學(xué)習(xí)Web逆向工程。

通過付費渠道,拿到了關(guān)于 Python 爬蟲的相關(guān)教材,百度網(wǎng)盤下載后發(fā)現(xiàn)文件格式像套娃一樣(如下圖所示),如果30+個文件都挨個點進去解壓,就顯得有點愚蠢,正好同時要學(xué) Python,于是拿來練手,寫一個批量解壓的腳本,由此引出了標(biāo)題。

image.png

省流

在調(diào)用 zipfile.ZipFile() 方法時,需要多傳 metadata_encoding 參數(shù),即:

with zipfile.ZipFile(sub_zip_path, 'r', metadata_encoding='gbk') as item:

編寫腳本

這里直接貼源碼了,主要是遍歷文件,并使用 zipfile 庫解壓:

import os
import zipfile
import shutil
origin_file_path = r"G:\Nas\爬蟲第11期"
# 使用 os.listdir 獲取目錄下的所有文件列表
path_dir = os.listdir(origin_file_path)
for finder in path_dir:
    # 拼接路徑
    item_path = os.path.join(origin_file_path, finder)
    # 如果是文件夾
    if os.path.isdir(item_path):
        # 繼續(xù)獲取子目錄下的文件列表
        sub_file_dir = os.listdir(item_path)
        # 如果不是空文件夾
        if len(sub_file_dir): 
            # 正常應(yīng)該用正則判斷是不是zip文件
            # 因為每個文件夾只有一個zip壓縮包,固直接取sub_file_dir的下標(biāo)0
            sub_zip_path = os.path.join(item_path, sub_file_dir[0])
            # 將文件解壓到當(dāng)前目錄
            zip_to_path = os.path.join(sub_zip_path, finder)
            # 參數(shù) r 代表自動轉(zhuǎn)義【盤符】
            with zipfile.ZipFile(sub_zip_path, 'r') as item:
                # 其實直接調(diào)用extractall方法可以實現(xiàn)全部解壓
                # item.extractall(item_path)
                # 遍歷壓縮文件,并解壓
                for name in item.namelist():
                    item.extract(name, item_path)
                    print(f'name: {name} | {sub_zip_path}')
                item.close()
            # 若對解壓結(jié)果不滿意,批量刪除
            # if os.path.isdir(sub_zip_path):
            #     shutil.rmtree(sub_zip_path)
            print(finder, item_path, sub_file_dir)
    else:
        print('isFile:', finder)

點擊運行,然后……

image.png

完全的亂碼,根本沒法用。

批量刪除(可選)

此時可以把批量刪除的代碼注釋打開,清空亂碼文件,即:

            # 參數(shù) r 代表自動轉(zhuǎn)義【盤符】
            # with zipfile.ZipFile(sub_zip_path, 'r') as item:
            #     # item.extractall(item_path)
            #     for name in item.namelist():
            #         item.extract(name, item_path)
            #         print(f'name: {name} | {sub_zip_path}')
            #     item.close()
            # 若對解壓結(jié)果不滿意,批量刪除
            if os.path.isdir(sub_zip_path):
                shutil.rmtree(sub_zip_path)

shutil.rmtree() 就是刪除整個文件夾(不會校驗子目錄的狀態(tài))的意思

尋解過程

Google 后發(fā)現(xiàn)大多數(shù)都是幾年前的解法,而且涉及到修改庫文件源碼:

image.png

image.png

于是在查看源碼的過程中,發(fā)現(xiàn)其實3.11版本已經(jīng)支持了中文解碼,只需要傳入?yún)?shù)即可:

image.png

由上圖可知,若不傳入 metadata_encoding 就會默認按 cp437 處理。

修改后,再次運行腳本,發(fā)現(xiàn)打印和解壓目錄也正常了:

image.png

image.png

到此這篇關(guān)于Python批量解壓文件中出現(xiàn)中文亂碼的原因及解決方法的文章就介紹到這了,更多相關(guān)Python解壓文件中出現(xiàn)中文亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Opencv的圖像卡通化實現(xiàn)代碼

    基于Opencv的圖像卡通化實現(xiàn)代碼

    這篇文章主要介紹了基于Opencv的圖像卡通化,主要工具是高斯濾波器、細節(jié)增強濾波器、雙邊濾波、拉普拉斯濾波器,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • Python中PyExecJS(執(zhí)行JS代碼庫)的具體使用

    Python中PyExecJS(執(zhí)行JS代碼庫)的具體使用

    pyexecjs是一個用Python來執(zhí)行JavaScript代碼的工具庫,本文主要介紹了Python中PyExecJS(執(zhí)行JS代碼庫)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 在Python上基于Markov鏈生成偽隨機文本的教程

    在Python上基于Markov鏈生成偽隨機文本的教程

    這篇文章主要介紹了在Python上基于Markov鏈生成偽隨機文本的教程,是一個基于馬爾可夫算法的小實現(xiàn),充分體現(xiàn)了Python在科學(xué)計算中的用途,需要的朋友可以參考下
    2015-04-04
  • python實現(xiàn)圖片上添加圖片

    python實現(xiàn)圖片上添加圖片

    這篇文章主要為大家詳細介紹了python實現(xiàn)圖片上添加圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python實現(xiàn)復(fù)制大量文件功能

    python實現(xiàn)復(fù)制大量文件功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)復(fù)制大量文件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python vertibi算法實現(xiàn)原理解析

    python vertibi算法實現(xiàn)原理解析

    這篇文章主要為大家介紹了python vertibi算法實現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 使用Termux在手機上運行Python的詳細過程

    使用Termux在手機上運行Python的詳細過程

    這篇文章主要介紹了使用Termux在手機上運行Python的詳細過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 聊聊Python中的pypy

    聊聊Python中的pypy

    這篇文章主要介紹了聊聊Python中的pypy,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python操作word的多種庫的實戰(zhàn)指南

    Python操作word的多種庫的實戰(zhàn)指南

    這篇文章主要為大家詳細介紹了Python操作word的多種庫的相關(guān)使用,包括python-docx和docxtpl,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2025-10-10
  • Python標(biāo)準(zhǔn)庫sys庫常用功能詳解

    Python標(biāo)準(zhǔn)庫sys庫常用功能詳解

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫sys庫常用功能詳解,sys是Python提供的程序與解釋器交互的標(biāo)準(zhǔn)庫,文章圍繞主題展開相關(guān)介紹,需要的朋友可以參考一下
    2022-07-07

最新評論

英德市| 临夏市| 札达县| 资中县| 丹凤县| 肥城市| 游戏| 伊宁县| 黑山县| 老河口市| 镇坪县| 焉耆| 富平县| 应用必备| 双城市| 偃师市| 西宁市| 永吉县| 孟州市| 新巴尔虎左旗| 大埔县| 昭平县| 汉源县| 桐城市| 蒙山县| 和龙市| 锡林浩特市| 花莲市| 河源市| 黄大仙区| 客服| 佛山市| 察雅县| 侯马市| 桃园县| 娱乐| 亳州市| 寿阳县| 新乡市| 抚宁县| 洪洞县|