Python文件的压缩与解压
作者:浅若清风cyf? 发布时间:2023-09-01 08:17:23
标签:Python文件,压缩,解压
前言:
Python在人工智能,后台服务等领域中得到了广泛应用。由于python有着大量的第三方开源包以及其易用的语言特性,这门语言在数据处理、批处理等方法具有强大的优势,使用起来相当便捷。本文为大家带来的是使用Python进行文件、文件夹压缩与解压,用到的是zipfile的第三方依赖库。根据不同应用场景封装了几个方法,方便根据实际需要使用相应的方法,能够筛选出需要压缩的文件。
安装:
pip install zipfile
代码:
1、压缩整个文件夹
import zipfile
import os
from tqdm import tqdm
def zip_file(src_dir, save_name='default'):
'''
压缩文件夹下所有文件及文件夹
默认压缩文件名:文件夹名
默认压缩文件路径:文件夹上层目录
'''
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、压缩指定扩展名文件
def zip_file_by_extension(src_dir, extension='dll', save_name='default'):
'''
根据文件扩展名筛选需要压缩的文件到压缩包
注:针对单层目录情况,文件夹下的子文件不会被压缩
'''
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
来源:https://juejin.cn/post/7085611772018688008


猜你喜欢
- 从 Google 的一个细节说起:整个虚线框都是“Next”的可点击区域。看似不经意,却直接提升了细节的可用性。其它页码也巧妙地和上面的字母
- K-Means聚类算法演示及可视化展示#导入包from sklearn.cluster import KMeansX = [[0.0888,
- 如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。在这几行代码中,我们可以看
- 我们在编写asp程序时经常会使用到这个功能,一般我们这样判断如:if a="" then ,而这个函数考虑的就比较全面了
- 突如其来想知道一下 python 如何修改文件的属性(创建、修改、访问时间),于是就去网上搜集了可行方案,也就有了这篇博客方案一from w
- 博主本地环境:VMwareCentos7.6django2.22python3.6出现这个的原因分析:第一:您在VMware中的虚拟主机地址
- Beautiful Soup是一种Python的解析库,主要用于解析和处理HTML/XML内容。它是基于Python的标准库和第三方库的结合
- javascript是种脚本语言,浏览器下载到哪儿就会执行到哪儿,这种特性会为编程提供方便,但也容易使程序过于凌乱,支离破碎。 js从功能上
- 今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。网上说用流来处理,没有这么做。这像是一个
- numpy随机打乱数据方法np.random.shuffleimport numpy as np#实验可得每次shuffle后数据都被打乱,
- 一般情况下,使用pip命令安装即可:[root@dthost27 ~]# pip install mysql-python但是在实际工作环境
- window.onload=function() {&
- 最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收
- 通用用法但上图的字段名,类型需要根据不同接口填写,如某服务接口:因而对应的上传代码如下:# 输出参数:请求响应报文import reques
- 前言众所周知,Dataset和Dataloder是pytorch中进行数据载入的部件。必须将数据载入后,再进行深度学习模型的训练。在pyto
- concat()是将tensor沿着指定维度连接起来。其中tensorflow1.3版中是这样定义的:concat(values,axis,
- 本文实例讲述了Python实现字符串格式化输出的方法。分享给大家供大家参考,具体如下:python属于强类型的语言,如果像java一样操作字
- 现在就摘录一下sql2005联机丛书里的关于这几个数据类型的解释字符数据类型(nchar 长度固定,nvarchar 长度可变)和 Unic
- 这是一个获取字符串中两个子串之间的子串,如从字符串www.aspxhome.com中获取coderbolg子串,就让这个PHP函数来实现吧,
- 在我们学习的过程中会遇到这么样的问题,就是在我们学习的过程中会发现需要分页处理,这里呢,给大家介绍书上说的分页。@app.route(