国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[python]批量解壓文件夾下所有壓縮包(rar、zip、7z)

這篇具有很好參考價(jià)值的文章主要介紹了[python]批量解壓文件夾下所有壓縮包(rar、zip、7z)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

????????在文件夾作用包含許多壓縮包的時(shí)候,解壓起來(lái)就很費(fèi)時(shí)費(fèi)力,尤其是在文件夾還存在嵌套的情況下,解壓起來(lái)就更麻煩了。Franpper今天給大家?guī)?lái)遞歸遍歷指定路徑下的所有文件和文件夾,批量解壓所有壓縮包的方法,幫大家一鍵解壓。

? ? ? ? 常見的壓縮包格式有rar、zip、7z,F(xiàn)ranpper將這幾種文件的解壓方式都寫在了方法里,下面以7z為例為大家詳細(xì)介紹一下,全部完整代碼見最底部。

目錄

一、代碼介紹

二、注意事項(xiàng)

三、完整代碼


一、代碼介紹

? ? ? ? 首先是函數(shù)mkdir函數(shù),用來(lái)新建文件夾存放解壓文件。

def mkdir(path):
    isExists = os.path.exists(path)
    if not isExists:
        os.makedirs(path)
        print(path + '創(chuàng)建成功')
    else:
        print(path + '目錄已存在')

? ? ? ? ?生成unzip_log.txt日志文件,用來(lái)記錄解壓失敗的文件路徑,這些文件需要手動(dòng)解壓。

 wrong_log = os.path.join(folder_path, 'unzip_log.txt')

?????????遞歸遍歷文件夾時(shí),獲取文件夾中所有文件夾的名字,如果壓縮包的名字與同目錄下文件夾(若存在)的名字相同,則認(rèn)為已經(jīng)被解壓過(guò),不對(duì)其進(jìn)行解壓操作。

contents = os.listdir(root)
folders = [folder for folder in contents if os.path.isdir(os.path.join(root, folder))]

?????????對(duì)于要解壓的文件,獲取其名字,生成文件夾。

 zipFile_name = file.split('.')[0:-1]
 zipFile_name = '.'.join(zipFile_name)

?????????接下來(lái)進(jìn)行解壓操作:

with py7zr.SevenZipFile(zipFile_path, mode='r') as z:
    z.extractall(path=unzip_zipFile_path)

? ? ? ? 解壓失敗的文件路徑記錄到日志中:

with open(wrong_log, 'a') as f:
    f.write(f'\n {zipFile_path}')

?二、注意事項(xiàng)

????????需要注意的是:

? ? ? ? 1) 在使用rarfile解壓rar文件的時(shí)候會(huì)出現(xiàn)解壓失敗的情況,需要將winrar的目錄中的UnRAR.exe,拷貝至python腳本目錄下。如下圖:

7z批量解壓,# 文件操作,python

? ? ? ? 2) 使用zipfile加壓zip文件的時(shí)候會(huì)出現(xiàn)解壓文件亂碼的情況,需要將zipfile.py文件中兩處按下圖修改。

7z批量解壓,# 文件操作,python

7z批量解壓,# 文件操作,python

7z批量解壓,# 文件操作,python文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-703652.html

三、完整代碼


import os
import zipfile
import rarfile
import py7zr
"""
解壓文件
"""


def mkdir(path):
    isExists = os.path.exists(path)
    if not isExists:
        os.makedirs(path)
        print(path + '創(chuàng)建成功')
    else:
        print(path + '目錄已存在')


def unzipFile(folder_path):
    wrong_log = os.path.join(folder_path, 'unzip_log.txt')
    for root, dirs, files in os.walk(folder_path):
        contents = os.listdir(root)
        folders = [folder for folder in contents if os.path.isdir(os.path.join(root, folder))]  # 該目錄下文件夾名稱列表
        for file in files:
            if file.endswith('7z'):
                zipFile_name = file.split('.')[0:-1]
                zipFile_name = '.'.join(zipFile_name)
                if zipFile_name in folders:
                    continue
                # 沒(méi)有重名文件則進(jìn)行解壓
                else:
                    # 創(chuàng)建解壓文件夾路徑
                    unzip_zipFile_path = os.path.join(root, zipFile_name)
                    mkdir(unzip_zipFile_path)
                    zipFile_path = os.path.join(root, file)
                    print(zipFile_path)
                    try:
                        with py7zr.SevenZipFile(zipFile_path, mode='r') as z:
                            z.extractall(path=unzip_zipFile_path)
                    except:
                        with open(wrong_log, 'a') as f:
                            f.write(f'\n {zipFile_path}')

            elif file.endswith('rar'):  # file 是待解壓文件
                # 有重名文件說(shuō)明被解壓過(guò),跳過(guò)
                rarFile_name = file.split('.')[0:-1]
                rarFile_name = '.'.join(rarFile_name)
                if rarFile_name in folders:
                    continue
                # 沒(méi)有重名文件則進(jìn)行解壓
                else:
                    # 創(chuàng)建解壓文件夾路徑
                    unzip_rarFile_path = os.path.join(root, rarFile_name)
                    mkdir(unzip_rarFile_path)
                    rarFile_path = os.path.join(root, file)
                    print(rarFile_path)
                    try:
                        with rarfile.RarFile(rarFile_path) as rar_ref:
                            rar_ref.extractall(unzip_rarFile_path)
                    except:
                        pass
                        with open(wrong_log, 'a') as f:
                            f.write(f'\n {rarFile_path}')

            elif file.endswith('zip'):  # file 是待解壓文件
                # 有重名文件說(shuō)明被解壓過(guò),跳過(guò)
                rarFile_name = file.split('.')[0:-1]
                rarFile_name = '.'.join(rarFile_name)
                if rarFile_name in folders:
                    continue
                # 沒(méi)有重名文件則進(jìn)行解壓
                else:
                    # 創(chuàng)建解壓文件夾路徑
                    unzip_rarFile_path = os.path.join(root, rarFile_name)
                    mkdir(unzip_rarFile_path)
                    rarFile_path = os.path.join(root, file)
                    print(rarFile_path)
                    try:
                        with zipfile.ZipFile(rarFile_path, 'r') as zip_ref:
                            zip_ref.extractall(unzip_rarFile_path)
                    except:
                        with open(wrong_log, 'a') as f:
                            f.write(f'\n {rarFile_path}')
            else:
                continue


unzipFile(r"G:\work\")

到了這里,關(guān)于[python]批量解壓文件夾下所有壓縮包(rar、zip、7z)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python獲取文件夾下所有文件

    python獲取文件夾下所有文件,大家肯定都會(huì)想到os.listdir了,但是這種方法只能夠獲取到當(dāng)前文件夾中的所有文件/文件夾,如果我想獲得文件夾-文件夾-文件呢? 我的需求是只要文件夾中所有非文件夾,換句話來(lái)說(shuō)對(duì)于我們的需求只有文件夾和非文件夾兩種情況,那么直接聯(lián)

    2024年02月12日
    瀏覽(24)
  • python遍歷文件夾下的所有子文件夾,并將指定的文件復(fù)制到指定目錄

    python遍歷文件夾下的所有子文件夾,并將指定的文件復(fù)制到指定目錄

    在1文件夾中有1,2兩個(gè)文件夾 將這兩個(gè)文件夾中的文件復(fù)制到 after_copy中 源文件 復(fù)制后: 參考1 源文件 復(fù)制后 參考2 如果復(fù)制bmp文件就將 suffix = \\\".json\\\" 改為 suffix = \\\".bmp\\\"

    2024年02月11日
    瀏覽(97)
  • [python]裁剪文件夾中所有pdf文檔并按名稱保存到指定的文件夾

    [python]裁剪文件夾中所有pdf文檔并按名稱保存到指定的文件夾

    最近在寫論文的實(shí)驗(yàn)部分,由于latex需要pdf格式的文檔,審稿專家需要對(duì)pdf圖片進(jìn)行裁剪放大,以保證圖片質(zhì)量。 原圖: 裁剪后的圖像: 代碼粘貼如下。將input_folder和output_folder替換即可。(x1, y1), (x2, y2) 分別代表裁剪框的像素位置。

    2024年01月19日
    瀏覽(29)
  • python判斷文件夾是否存在,不存在則創(chuàng)建它,并將文件夾下所有的文件及子文件刪除

    1、python判斷文件夾是否存在,不存在則創(chuàng)建它,并將文件夾下所有的文件及子文件刪除 2、python之判斷文件文件夾是否存在,存在則刪除,不存在則創(chuàng)建 2.1、刪除文件于文件夾 使用os.remove刪除文件夾會(huì)出現(xiàn)拒絕訪問(wèn)的錯(cuò)誤,所以要使用以下方式進(jìn)行刪除 2.2、創(chuàng)建文件與文件

    2024年02月11日
    瀏覽(117)
  • 如何用python獲取單個(gè)文件 或 文件夾中所有文件的行數(shù)

    如何用python獲取單個(gè)文件 或 文件夾中所有文件的行數(shù)

    本例展示獲取單個(gè)txt文件中的行數(shù): 本例展示獲取labels下的所有txt文件內(nèi)容的總行數(shù): 函數(shù)解釋 os.walk()是一種遍歷目錄數(shù)的函數(shù),機(jī)理類似深度優(yōu)先搜索和層次搜索策略,其返回的是 root dirs files 返回值解釋 root :代表當(dāng)前遍歷的目錄路徑,string類型 dirs :代表root路徑下的

    2024年02月09日
    瀏覽(96)
  • 用python實(shí)現(xiàn)檢查一個(gè)文件夾中所有word文件內(nèi)容是否重復(fù)

    要檢查一個(gè)文件夾中所有Word文件的內(nèi)容是否重復(fù),你可以使用Python的 python-docx 庫(kù)來(lái)讀取Word文件的內(nèi)容,并使用Python的集合數(shù)據(jù)結(jié)構(gòu)來(lái)檢查重復(fù)項(xiàng)。 以下是一個(gè)示例代碼,演示如何實(shí)現(xiàn)這個(gè)功能: python復(fù)制代碼 import os from docx import Document def get_word_files(directory): \\\"\\\"\\\"獲取指定目

    2024年01月23日
    瀏覽(44)
  • python如何批量讀取一個(gè)文件夾里的所以excel文件

    python如何批量讀取一個(gè)文件夾里的所以excel文件

    在數(shù)據(jù)分析工作中,嘗嘗需要處理多個(gè)不同月的excel文件,但無(wú)奈與excel文件的局限性,不能同時(shí)處理多個(gè)月的excel數(shù)據(jù),所以python的批量讀取excel文件就顯得十分重要,下面我將展示如何用python將每個(gè)月度的excel數(shù)據(jù)進(jìn)行讀取并匯總處理和輸出。 最好excel的文件名就是按照日期

    2024年02月16日
    瀏覽(95)
  • Python小技巧【1】——獲取指定文件夾下的所有文件【glob模塊】

    Python小技巧【1】——獲取指定文件夾下的所有文件【glob模塊】

    glob模塊 是Python標(biāo)準(zhǔn)庫(kù)中一個(gè)重要的模塊,主要用來(lái) 查找符合特定規(guī)則的目錄和文件,并將搜索的到的結(jié)果返回到一個(gè)列表中。 ?1、常用函數(shù)glob() 返回符合匹配條件的所有文件的路徑。 ?2、重要參數(shù)recursive recursive參數(shù) 代表是否遞歸調(diào)用,與特殊通配符 ** 一同使用,默認(rèn)為

    2024年02月04日
    瀏覽(96)
  • python opencv 讀取文件夾下所有MP4文件并解析成jpg圖像

    你可以使用Python的OpenCV庫(kù)來(lái)讀取文件夾中的所有MP4文件,并將其解析為JPG圖像。以下是一個(gè)示例代碼,演示了如何實(shí)現(xiàn)這個(gè)功能,并設(shè)置解析間隔為3幀: 請(qǐng)確保你已經(jīng)安裝了OpenCV庫(kù)(可以使用pip install opencv-python進(jìn)行安裝)。將代碼中的\\\"path/to/input/folder\\\"替換為包含MP4文件的實(shí)

    2024年01月19日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包