Python文件的壓縮與解壓
前言:
Python在人工智能,后臺(tái)服務(wù)等領(lǐng)域中得到了廣泛應(yīng)用。由于python有著大量的第三方開(kāi)源包以及其易用的語(yǔ)言特性,這門語(yǔ)言在數(shù)據(jù)處理、批處理等方法具有強(qiáng)大的優(yōu)勢(shì),使用起來(lái)相當(dāng)便捷。本文為大家?guī)?lái)的是使用Python進(jìn)行文件、文件夾壓縮與解壓,用到的是zipfile的第三方依賴庫(kù)。根據(jù)不同應(yīng)用場(chǎng)景封裝了幾個(gè)方法,方便根據(jù)實(shí)際需要使用相應(yīng)的方法,能夠篩選出需要壓縮的文件。
安裝:
pip install zipfile
代碼:
1、壓縮整個(gè)文件夾
import zipfile import os from tqdm import tqdm def zip_file(src_dir, save_name='default'): ''' 壓縮文件夾下所有文件及文件夾 默認(rèn)壓縮文件名:文件夾名 默認(rèn)壓縮文件路徑:文件夾上層目錄 ''' if save_name == 'default': zip_name = src_dir + '.zip' else: if save_name is None or save_name == '': zip_name = src_dir + '.zip' else: zip_name = save_name + '.zip' z = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) for dirpath, dirnames, filenames in os.walk(src_dir): fpath = dirpath.replace(src_dir, '') fpath = fpath and fpath + os.sep or '' for filename in filenames: z.write(os.path.join(dirpath, filename), fpath + filename) z.close() return True
2、壓縮指定擴(kuò)展名文件
def zip_file_by_extension(src_dir, extension='dll', save_name='default'): ''' 根據(jù)文件擴(kuò)展名篩選需要壓縮的文件到壓縮包 注:針對(duì)單層目錄情況,文件夾下的子文件不會(huì)被壓縮 ''' if save_name == 'default': zip_name = src_dir + '.zip' else: if save_name is None or save_name == '': zip_name = src_dir + '.zip' else: zip_name = save_name + '.zip' z = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) file_list = os.listdir(src_dir) for filename in tqdm(file_list): if not os.path.isfile(os.path.join(src_dir, filename)): continue if filename.split('.')[-1] == extension: print(r'正在壓縮文件:', filename, end='') z.write(os.path.join(src_dir, filename), filename) z.close() return True
3、獲取指定類型的待壓縮文件列表
def get_zip_file_list(src_dir, extension='dll'): ''' 獲取需要壓縮的文件列表 ''' file_list = os.listdir(src_dir) zip_list = [] for filename in file_list: if not os.path.isfile(os.path.join(src_dir, filename)): continue if filename.split('.')[-1] == extension: zip_list.append(filename) print(zip_list)
4、解壓文件
def unzip_file(zip_src, dst_dir): ''' 解壓縮 ''' r = zipfile.is_zipfile(zip_src) if r: fz = zipfile.ZipFile(zip_src, 'r') for file in fz.namelist(): fz.extract(file, dst_dir) else: print('This is not zip') return False return True
到此這篇關(guān)于Python文件的壓縮與解壓的文章就介紹到這了,更多相關(guān)Python文件壓縮解壓內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python填充任意顏色,不同算法時(shí)間差異分析說(shuō)明
這篇文章主要介紹了Python填充任意顏色,不同算法時(shí)間差異分析說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05一文帶你了解Python中不同數(shù)據(jù)對(duì)象的空值校驗(yàn)方法
空值校驗(yàn)在數(shù)據(jù)處理和應(yīng)用程序開(kāi)發(fā)中是一個(gè)非常重要的任務(wù),Python提供了多種方式來(lái)檢查不同數(shù)據(jù)對(duì)象(如字符串、列表、字典、集合等)是否為空或包含空值,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧2024-01-01詳解Python如何實(shí)現(xiàn)壓縮與解壓縮數(shù)據(jù)
當(dāng)數(shù)據(jù)量大的時(shí)候,自然而然想到的就是對(duì)數(shù)據(jù)進(jìn)行壓縮,這篇文章主要為大家介紹了Python可以實(shí)現(xiàn)壓縮與解壓縮數(shù)據(jù)的相關(guān)模塊的使用,希望對(duì)大家有所幫助2024-02-02python中g(shù)etopt()函數(shù)用法詳解
這篇文章主要介紹了python中g(shù)etopt()函數(shù)用法,通過(guò)getopt模塊中的getopt(?)方法,我們可以獲取和解析命令行傳入的參數(shù),需要的朋友可以參考下2022-12-12Python3+RIDE+RobotFramework自動(dòng)化測(cè)試框架搭建過(guò)程詳解
這篇文章主要介紹了Python3+RIDE+RobotFramework自動(dòng)化測(cè)試框架搭建過(guò)程詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09基于Python實(shí)現(xiàn)簡(jiǎn)易的動(dòng)漫圖片轉(zhuǎn)換器
本文旨在利用Python語(yǔ)言制作一個(gè)將普通照片轉(zhuǎn)換成動(dòng)漫圖片的小工具,其中使用opencv的非標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)對(duì)圖片完成轉(zhuǎn)換,感興趣的可以嘗試一下2022-08-08基于Keras中Conv1D和Conv2D的區(qū)別說(shuō)明
這篇文章主要介紹了基于Keras中Conv1D和Conv2D的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06教你用Python查看茅臺(tái)股票交易數(shù)據(jù)的詳細(xì)代碼
CSV是以逗號(hào)分隔數(shù)據(jù)項(xiàng)(也被稱為字段)的數(shù)據(jù)交換格式,主要應(yīng)用于電子表格和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交換,本文給大家介紹下用Python查看茅臺(tái)股票交易數(shù)據(jù)的詳細(xì)代碼,感興趣的朋友一起看看吧2022-03-03