欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)批量壓縮解壓文件(zip、rar)

 更新時(shí)間:2023年09月05日 11:50:02   作者:RS迷途小書(shū)童  
Python是一種廣泛使用的編程語(yǔ)言,非常適合處理各種任務(wù),包括批量解壓縮文件,本文主要介紹了Python實(shí)現(xiàn)批量壓縮解壓文件,具有一定的參考價(jià)值,感興趣的可以了解一下

好長(zhǎng)一段時(shí)間沒(méi)有更新了,最近手里的項(xiàng)目沒(méi)停過(guò)太忙了。今天正好有空就分享下之前編寫(xiě)的一段代碼。

起因是因?yàn)槲蚁雽⒁恍┪募蟼髦辆W(wǎng)盤(pán),但奈何太窮開(kāi)不起會(huì)員,無(wú)法上傳超過(guò)4G的文件。于是就想能不能使用Python實(shí)現(xiàn)批量壓縮文件夾,搞都搞了順便將解壓文件夾也寫(xiě)出來(lái)了。今天就和大家分享一下。

一、導(dǎo)入相關(guān)庫(kù)

os庫(kù)是為了監(jiān)測(cè)生成的文件夾是否已存在。主要的庫(kù)是zipfile,它提供了有關(guān)windows下的文件/文件夾的壓縮、解壓的函數(shù)。

import os
import zipfile

二、壓縮文件

今天偷個(gè)懶,就不一段一段的去解釋了,直接整個(gè)函數(shù)展示。相關(guān)的注釋已經(jīng)寫(xiě)清楚了,主要函數(shù)就是zipfile.ZipFile和zip_file.write。zip_file.write(file_path,file_each)中,file_path是文件夾中文件的完整路徑,file_each是文件名。

def Compress_path_zip(path_all):
    path_all_list = os.listdir(path_all)
    # 列出總文件夾內(nèi)所有需要壓縮的文件夾
    for path_each in path_all_list:
        path_compress = os.path.join(path_all, path_each)
        # 待壓縮的絕對(duì)路徑
        if os.path.isdir(path_compress):
            print("正在壓縮:%s" % path_each)
            # 遍歷所有需要壓縮的文件夾
            if os.path.exists(path_all + "%s.zip" % path_each):
                print(path_all + "%s1.zip" % path_each+"已存在,新文件名為'%s'" % (path_all + "%s1.zip" % path_each))
                zip_file = zipfile.ZipFile(path_all + "%s1.zip" % path_each, 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
                # 創(chuàng)建的壓縮對(duì)象用于執(zhí)行后續(xù)操作
                # file_list = zip_file.namelist()
                # 列出壓縮文件夾中所有文件
            else:
                zip_file = zipfile.ZipFile(path_all + "%s.zip" % path_each, 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
            file_list = os.listdir(path_compress)
            # 待壓縮文件夾內(nèi)所有文件
            # zip_file.setpassword(b'123')
            for file_each in file_list:
                # 遍歷所有文件夾內(nèi)的文件
                file_path = os.path.join(path_compress, file_each)
                zip_file.write(file_path, file_each)
            zip_file.close()
        else:
            print(path_each, "不是文件夾,不進(jìn)行壓縮")
            continue

三、解壓文件

這段代碼就不細(xì)說(shuō)了,反正修改了路徑就能直接使用了。

def Decompress_path_zip(path_all):
    path_all_list = os.listdir(path_all)
    for path_each in path_all_list:
        # 遍歷所有需要壓縮的文件夾
        if path_each.endswith('.zip'):
            print("正在解壓:%s" % path_each)
            path_decompress = os.path.join(path_all, path_each)
            zip_file = zipfile.ZipFile(path_decompress, 'r')  # 壓縮文件位置
            for file in zip_file.namelist():
                if os.path.exists(path_decompress[:-4]):
                    print("'%s'" % path_decompress[:-4], "已存在,新文件名為'%s'" % (path_decompress[:-4] + "1"))
                    zip_file.extract(file, path_decompress[:-4] + "1")  # 解壓位置,pwd="1234".encode('utf-8')
                else:
                    zip_file.extract(file, path_decompress[:-4])  # 解壓位置
            zip_file.close()
        else:
            print(path_each, "非zip文件,不進(jìn)行解壓!")
            continue

四、完整代碼

# -*- coding: utf-8 -*-
"""
@Time : 2023/8/28 14:47
@Auth : RS迷途小書(shū)童
@File :Compress and Decompress Folders.py
@IDE :PyCharm
@Purpose:批量壓縮/解壓文件夾
"""
import os
import zipfile
def Compress_path_zip(path_all):
    path_all_list = os.listdir(path_all)
    # 列出總文件夾內(nèi)所有需要壓縮的文件夾
    for path_each in path_all_list:
        path_compress = os.path.join(path_all, path_each)
        # 待壓縮的絕對(duì)路徑
        if os.path.isdir(path_compress):
            print("正在壓縮:%s" % path_each)
            # 遍歷所有需要壓縮的文件夾
            if os.path.exists(path_all + "%s.zip" % path_each):
                print(path_all + "%s1.zip" % path_each+"已存在,新文件名為'%s'" % (path_all + "%s1.zip" % path_each))
                zip_file = zipfile.ZipFile(path_all + "%s1.zip" % path_each, 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
                # 創(chuàng)建的壓縮對(duì)象用于執(zhí)行后續(xù)操作
                # file_list = zip_file.namelist()
                # 列出壓縮文件夾中所有文件
            else:
                zip_file = zipfile.ZipFile(path_all + "%s.zip" % path_each, 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
            file_list = os.listdir(path_compress)
            # 待壓縮文件夾內(nèi)所有文件
            # zip_file.setpassword(b'123')
            for file_each in file_list:
                # 遍歷所有文件夾內(nèi)的文件
                file_path = os.path.join(path_compress, file_each)
                zip_file.write(file_path, file_each)
            zip_file.close()
        else:
            print(path_each, "不是文件夾,不進(jìn)行壓縮")
            continue
def Decompress_path_zip(path_all):
    path_all_list = os.listdir(path_all)
    for path_each in path_all_list:
        # 遍歷所有需要壓縮的文件夾
        if path_each.endswith('.zip'):
            print("正在解壓:%s" % path_each)
            path_decompress = os.path.join(path_all, path_each)
            zip_file = zipfile.ZipFile(path_decompress, 'r')  # 壓縮文件位置
            for file in zip_file.namelist():
                if os.path.exists(path_decompress[:-4]):
                    print("'%s'" % path_decompress[:-4], "已存在,新文件名為'%s'" % (path_decompress[:-4] + "1"))
                    zip_file.extract(file, path_decompress[:-4] + "1")  # 解壓位置,pwd="1234".encode('utf-8')
                else:
                    zip_file.extract(file, path_decompress[:-4])  # 解壓位置
            zip_file.close()
        else:
            print(path_each, "非zip文件,不進(jìn)行解壓!")
            continue
if __name__ == "__main__":
    path = "G:/try/"
    # Compress_path_zip(path)
    Decompress_path_zip(path)

本來(lái)是想將壓縮加密文件和解壓加密文件寫(xiě)出來(lái)的,結(jié)果zipfile庫(kù)好像不支持加密文件,所以就沒(méi)寫(xiě)。雖然解壓加密文件可以,但是很呆,因?yàn)橹挥惺褂脗鹘y(tǒng)加密的zip文件,才可以使用密碼解壓,不是傳統(tǒng)加密的就算密碼正確他也不解壓,所以就都不寫(xiě)啦。大家如果想用的話,直接修改路徑就行。

到此這篇關(guān)于Python實(shí)現(xiàn)批量壓縮解壓文件(zip、rar)的文章就介紹到這了,更多相關(guān)Python 批量壓縮解壓文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python針對(duì)不定分隔符切割提取字符串的方法

    python針對(duì)不定分隔符切割提取字符串的方法

    今天小編就為大家分享一篇python針對(duì)不定分隔符切割提取字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • python推導(dǎo)式的使用方法實(shí)例

    python推導(dǎo)式的使用方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于python推導(dǎo)式的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 自動(dòng)化測(cè)試時(shí)基于Python常用的幾個(gè)加密算法總結(jié)

    自動(dòng)化測(cè)試時(shí)基于Python常用的幾個(gè)加密算法總結(jié)

    這幾天做自動(dòng)化測(cè)試,遇到一個(gè)問(wèn)題,那就是接口的請(qǐng)求的密碼是加密的,產(chǎn)品的要求是不能使用使用其他特殊手段,他給提供加密算法,需要在接口請(qǐng)求的時(shí)候,使用加密算法處理后的數(shù)據(jù)傳參,本文主要是整理了幾個(gè)加密算法,以便后續(xù)測(cè)試使用,需要的朋友可以參考下
    2023-12-12
  • 如何將python腳本打包為exe可執(zhí)行文件

    如何將python腳本打包為exe可執(zhí)行文件

    這篇文章主要介紹了如何將python腳本打包為exe可執(zhí)行文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解如何使用Python實(shí)現(xiàn)過(guò)濾指定進(jìn)程

    詳解如何使用Python實(shí)現(xiàn)過(guò)濾指定進(jìn)程

    Python提供了多種方式來(lái)實(shí)現(xiàn)對(duì)進(jìn)程的過(guò)濾和操作,本文將介紹如何利用Python來(lái)過(guò)濾指定進(jìn)程,并展示一些實(shí)用的技巧和方法,希望對(duì)大家有所幫助
    2024-04-04
  • Python筆記之觀察者模式

    Python筆記之觀察者模式

    這篇文章主要為大家詳細(xì)介紹了Python筆記之觀察者模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python中的*與**用法示例詳解

    python中的*與**用法示例詳解

    這篇文章主要介紹了python中*與**用法的相關(guān)資料,Python中的*和**用于數(shù)值計(jì)算、序列解包、函數(shù)定義和調(diào)用,*用于乘法和解包序列,**用于乘方、解包字典和擴(kuò)展字典,需要的朋友可以參考下
    2025-01-01
  • anaconda安裝后打不開(kāi)解決方式(親測(cè)有效)

    anaconda安裝后打不開(kāi)解決方式(親測(cè)有效)

    Anaconda是一個(gè)和Canopy類(lèi)似的科學(xué)計(jì)算環(huán)境,但用起來(lái)更加方便,下面這篇文章主要給大家介紹了關(guān)于anaconda安裝后打不開(kāi)解決的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 利用python中的matplotlib打印混淆矩陣實(shí)例

    利用python中的matplotlib打印混淆矩陣實(shí)例

    這篇文章主要介紹了利用python中的matplotlib打印混淆矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解

    python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解

    python當(dāng)然不是一門(mén)編譯型語(yǔ)言,但是它還是要被解析成二進(jìn)制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關(guān)于python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評(píng)論