Python实现rar、zip和7z文件的压缩和解压
一、7z压缩文件的压缩和解压
1、安装py7zr
我们要先安装py7zr
第三方库:
pip install py7zr
如果python环境有问题,执行上面那一条安装语句老是安装在默认的python环境的话,我们可以执行下面这条语句,将第三方库安装在项目的虚拟环境中:
pip install py7zr --target=E:\Python脚本\作业查重\OS_Study\venv\Lib\site-packages
2、解压7z文件
import py7zr
# 将压缩文件解压到指定目录
def decompress_7z():# 将要解压的压缩文件路径archive = py7zr.SevenZipFile(r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统.7z', mode='r')# 压缩文件的解压目录archive.extractall(path=r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统')archive.close()
3、压缩成7z文件
import py7zr
# 将指定目录压缩到指定压缩文件test.7z'
def compression_7z():# 生成的压缩文件路径archive = py7zr.SevenZipFile(r'E:\Python脚本\作业查重\test.7z', mode='w')# 需要压缩的压缩文件archive.writeall(path=r'../test')archive.close()
二、rar压缩文件的压缩和解压
1、环境准备
我们用到的第三方库为rarfile
,因为我们的这个第三方库需要用到第三方程序,所以我们要先配一下环境。
(1)导入unrar
模块:
pip install unrar
(2)下载 unrar library
并按照默认安装路径安装,下载链接:下载
(3) 编辑环境变量:
用户变量 -> 变量名:
x64
-> 变量值:C:\Program Files (x86)\UnrarDLL\x64
(默认路径是这个)
系统变量 -> 变量名:UNRAR_LIB_PATH
-> 变量值:C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll
(默认路径)[32位系统下的变量值为C:\Program Files (x86)\UnrarDLL\UnRAR.dll
]
(4)安装winrar
(360软件中心有):
将 winrar
的目录下的 unrar.exe
复制到 Python 路径的 Scripts
文件夹下。
(5)重启Pycharm
2、安装rarfile
执行以下命令:
pip install rarfile
3、解压rar文件
import rarfile
def decompress_rar():# 找到rar文件z = rarfile.RarFile(r'E:\Python脚本\作业查重\2015090103石凯-新闻管理系统.rar') # 指定解压输出的目录z.extractall(r'E:\Python脚本\作业查重\2015090103石凯-新闻管理系统') z.close()# 删除压缩文件# os.remove(pathRar)
4、压缩成rar文件
由于rarfile
只能解压文件不能压缩文件,所以我们需要调用第三方程序来完成。
def compress(input_file, output_file, root_path,rar_path='D:/"Program Files"/WinRAR/WinRAR.exe'):"""调用CMD命令压缩文件/文件夹Parameters----------input_file : 需要压缩的文件/文件夹名。从哪一级目录开始,就会从哪一级开始压缩;output_file : 压缩文件的输出路径及其压缩的文件名;可以是.rar, .zip;root_path: input_file 所在目录;rar_path : WinRAR软件的安装路径,The default is 'C:/"Program Files"/WinRAR/WinRAR.exe'.NOTE: 路径和文件名中带空格的时候一定要多加一重引号!!"""cmd_command = r'%s a %s %s' % (rar_path, output_file, input_file)print(root_path)os.chdir(root_path) # 切换工作目录print(cmd_command)os.system(cmd_command)if os.system(cmd_command)==0:print('Successful backup to', output_file)else:print('Backup FAILED', input_file) def rar(paths):files = os.listdir(paths)for path in files:input_file = '"' + path + '"'out = path.split('.')[0] + '_bak.rar'out_file = '"' + out + '"'print(path)print(out)compress(input_file,out_file,paths)
参考文章:https://blog.csdn.net/hanmengaidudu/article/details/120193682
三、zip文件的压缩和解压
1、安装zipfile
执行以下命令:
pip install zipfile
2、解压zip文件
使用zipfile
的extract()
或extractall()
方法直接解压时,文件名可能会出现乱码,所以我们要特别解决这个问题:
# 出现乱码时解码
def recode(raw: str) -> str:try:return raw.encode('cp437').decode('gbk')except:return raw.encode('utf-8').decode('utf-8')# 解压zip文件
def decompress_zip(pathZip, obj):zipFile = zipfile.ZipFile(pathZip) # 压缩包路径zipFileList = zipFile.namelist() # 获取压缩包里所有文件print('-------------------正在解压-----------------------')for f in zipFileList:zipFile.extract(f, obj) # 循环解压文件到指定目录name1 = os.path.join(obj, f) # 乱码文件名name2 = os.path.join(obj, recode(f)) # 解码后文件名os.rename(name1, name2) # 文件重命名zipFile.close() # 关闭文件释放内存print('-------------------解压完成-----------------------')# 删除压缩文件# os.remove(pathZip)
3、压缩成zip文件
参考文章:https://blog.csdn.net/Likianta/article/details/126710855
参考文章:https://blog.csdn.net/ooowwq/article/details/125949394
参考 文章:https://blog.csdn.net/qq_36182112/article/details/127630950
相关文章:
Python实现rar、zip和7z文件的压缩和解压
一、7z压缩文件的压缩和解压 1、安装py7zr 我们要先安装py7zr第三方库: pip install py7zr如果python环境有问题,执行上面那一条安装语句老是安装在默认的python环境的话,我们可以执行下面这条语句,将第三方库安装在项目的虚拟…...

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala
从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg,愿天下不再有肤浅的SQL Boy】 谈到大数据开发,占据绝大多数人口的就是SQL Boy,不接受反驳,毕竟大…...

RocketMQ 事务消息 原理及使用方法解析
🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年3月24日 &#x…...

为什么 ChatGPT 输出时经常会中断,需要输入“继续” 才可以继续输出?
作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…...

PyTorch 之 基于经典网络架构训练图像分类模型
文章目录一、 模块简单介绍1. 数据预处理部分2. 网络模块设置3. 网络模型保存与测试二、数据读取与预处理操作1. 制作数据源2. 读取标签对应的实际名字3. 展示数据三、模型构建与实现1. 加载 models 中提供的模型,并且直接用训练的好权重当做初始化参数2. 参考 pyto…...

Scrapy的callback进入不了回调方法
一、前言 有的时候,Scrapy的callback方法直接被略过了,不去执行其中的回调方法,可能排查好久都排查不出来,我来教大家集中解决方法。 yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法 1…...

第二十一天 数据库开发-MySQL
目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …...

蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)
文章目录[蓝桥杯 2021 省 AB2] 完全平方数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示思路:理论补充:完全平方数的一个性质:完全平方数的质因子的指数一定为偶数最终思路:小插曲&am…...

Linux编辑器-vim
一、vim简述1)vi/vim2)检查vim是否安装2)如何用vim打开文件3)vim的几种模式命令模式插入模式末行模式可视化模式二、vim的基本操作1)进入vim(命令行模式)2)[命令行模式]切换至[插入模式]3)[插入模式]切换至[命令行模式]4)[命令行模…...

5G将在五方面彻底改变制造业
想象一下这样一个未来,智能机器人通过在工厂车间重新配置自己,从多条生产线上组装产品。安全无人机处理着从监视入侵者到确认员工停车等繁琐的任务。自动驾驶汽车不仅可以在建筑物之间运输零部件,还可以在全国各地运输。工厂检查可以在千里之…...
http和https的区别?
http和https的区别?HTTPHTTPSHTTP与HTTPS区别HTTPS相比于HTTP协议的优点和缺点HTTP http是超文本传输协议 HTTP协议是基于传输层的TCP协议进行通信,通用无状态的协议。80端口 HTTPS https—安全的超文本传输协议 是以安全为目标的HTTP通道,…...

【Spring Cloud Alibaba】4.创建服务消费者
文章目录简介开始搭建创建项目修改POM文件添加启动类添加配置项添加Controller添加配置文件启动项目测试访问Nacos访问接口查看端点检查简介 接下来我们创建一个服务消费者,本操作先要完成之前的步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud A…...

C语言——动态内存管理 malloc、calloc、realloc、free的使用
目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 2.1malloc和free 2.2calloc 2.3realloc 三、常见的动态内存错误 3.1对NULL指针的解引用操作 3.2对动态开辟空间的越界访问 3.3对非动态开辟的内存使用free释放 3.4使用free释放一块动态开辟内存的一部分 3.5…...

技术分享——Java8新特性
技术分享——Java8新特性1.背景2. 新特性主要内容3. Lambda表达式4. 四大内置核心函数式接口4.1 Consumer<T>消费型接口4.2 Supplier<T>供给型接口4.3 Function<T,R>函数型接口4.4 Predicate<T> 断定型接口5. Stream流操作5.1 什么是流以及流的类型5.2…...
vue基础知识大全
1,指令作用 以v-开头,由vue提供的attribute,为渲染DOM应用提供特殊的响应式行为,也即是在表达式的值发生变化的时候响应式的更新DOM。其内容为可以被求值的js代码,可以写在return后面被返回的表达式。 指令的简写指令简…...

第2篇|文献研读|nature climate change|减缓气候变化和促进热带生物多样性的碳储量走廊
研究背景 从 2000 年到 2012 年,潮湿和干燥热带地区的森林总损失超过 90,000 平方公里 yr-1,这主要是由农业扩张驱动的。热带森林砍伐向大气中排放 0:95 Pg C yr-1 并导致广泛的生物多样性丧失。保护区的生物多样性取决于与保护区所在的更广泛景观的生态…...

从暴力递归到动态规划(2)小乖,你也在为转移方程而烦恼吗?
前引:继上篇我们讲到暴力递归的过程,这一篇blog我们将继续对从暴力递归到动态规划的实现过程,与上篇类似,我们依然采用题目的方式对其转化过程进行论述。上篇博客:https://blog.csdn.net/m0_65431718/article/details/…...
Leetcode.1638 统计只差一个字符的子串数目
题目链接 Leetcode.1638 统计只差一个字符的子串数目 Rating : 1745 题目描述 给你两个字符串 s和 t,请你找出 s中的非空子串的数目,这些子串满足替换 一个不同字符 以后,是 t串的子串。换言之,请你找到 s和 t串中 恰…...

KoTime:v2.3.9新增线程管理(线程统计、状态查询等)
功能概览 KoTime的开源版本已经迭代到了V2.3.9,目前功能如下: 实时监听方法,统计运行时长web展示方法调用链路,瓶颈可视化追踪追踪系统异常,精确定位到方法接口超时邮件通知,无需实时查看线上热更新&…...

直面风口,未来不仅是中文版ChatGPT,还有AGI大时代在等着我们
说到标题的AI2.0这个概念的研究早在2015年就研究起步了,其实大家早已知道,人工智能技术必然是未来科技发展战略中的重要一环,今天我们就从AI2.0入手,以GPT-4及文心一言的发布为切入角度,来谈一谈即将降临的AGI时代。 关…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...