Python学习笔记(3):zipfile解压库

简介

python自带zipfile解压库,导入方式如下

import zipfile

批量解压

先尝试无密码解压,如果失败,就输入密码。但是zipfile解压大文件速度很慢。

path = r'L:/resource/zipPackage'
passwd = b'123456'
def compressFromZip():for temp_name in os.listdir(path):if os.path.isdir(temp_name):continuetry:with zipfile.ZipFile(path + '/' + temp_name, 'r') as z:z.extractall(path)except RuntimeError as e:print(e)with zipfile.ZipFile(path + '/' + temp_name, 'r') as z:z.extractall(path, pwd=passwd)

文件转码问题

由于zip文件使用cp437进行编码,因此压缩文件中如果存在中文字符时候,会解码失败。因此需要进行遍历恢复。恢复代码如下:(借鉴网络大佬的深度遍历os.listdir方式)

注意:
有些人可能想使用os.walk的方式进行深度遍历,但是如果某个文件夹名因为存在汉字被rename了以后,os.walk生成器将会提前break out导致代码失败。因此不能使用该生成器。

def an_garcode(dir_names):"""anti garbled code"""os.chdir(dir_names)for temp_name in os.listdir('.'):try:#使用cp437对文件名进行解码还原new_name = temp_name.encode('cp437')#win下一般使用的是gbk编码new_name = new_name.decode("gbk")#对乱码的文件名及文件夹名进行重命名os.rename(temp_name, new_name)#传回重新编码的文件名给原文件名temp_name = new_nameexcept UnicodeEncodeError:#如果已被正确识别为utf8编码时则不需再编码passif os.path.isdir(temp_name):#对子文件夹进行递归调用an_garcode(temp_name)#记得返回上级目录os.chdir('..')

遗留问题

1. zipfile库解压大文件耗时太长,比人工解压耗时还长,不知道有没有别的办法可以解决。。。

2. 转码问题,使用zipfile库解压以后,需要重新遍历文件路径,进行文件编码恢复,有没有其他方法,在解压过程中直接进行转码。。。

希望看到该文章的小伙伴可以思考并回复一下我,感谢感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字万用表使用方法

数字万用表使用方法 简介:数字万用表相对来说,属于比较简单的测量仪器。本篇,作者就教大家数字万用表的正确使用方法。从数字万用表的电压、电阻、电流、二极管、三极管、MOS场效应管的测量等测量方法开始,让你更好的掌握万用表测…

Python学习笔记(4):Python如何设置类似C语言静态函数

介绍 模块封装时候,希望有一些函数不被外部直接调用。C语言通常采用static int function()形式以及头文件形式作为标识。而python不存在头文件,但可以通过修饰符staticmethod进行代替。 staticmethod def your_function():# 你的代码print("your …

c++ 字符串相等比较

介绍 在C 中比较字符串的技术 (Techniques to Compare Strings in C) Strings in C can be compared using either of the following techniques: 可以使用以下两种技术之一来比较C 中的字符串: String strcmp() function 字符串strcmp()函…

ffmpeg下载安装 多段ts视频m3u8下载

如何下载多段ts视频 m3u8 ffmpeg ffmpeg使用教程 下载 Windows下载方法 step1. 官网下载地址 点此进入下载地址 step2. 选择 Windows EXE files 中的Windows builds by BtbN 这会跳转到github页面中。 step3. 选择对应的linux平台或者windows平台进行下载 安装 step1.…

linux环境下安装多个任意版本的python环境

linux环境下安装多个任意版本的python环境 安装方法可以归结为 [下载 编译 配置环境变量] 下载Python 参考链接: .任意python版本下载,所有python版本下载的FTP路径 Windows下载发送到linux上 step1. 下载linux版本的python 从Python官网进入 选择…

linux云服务器状态上报解决方案:外发个人邮箱

linux云服务器状态上报解决方案:外发个人邮箱 需求如下: #### 将一些服务器的关键日志实时发送到手机上一些案例: CPU状态检测 解决方案: #### 利用mailx命令外发邮件方法如下: 1. 用管理员打开mail配置文件 >…

Matplotlib画图教程:在QT界面中嵌入三维图片

Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制。因此就诞生了做这么一个小模块的想法。 这里先上一下最终结果: 思…

Python工程笔记(1):轨迹与日志

轨迹记录模块(Recorder) 轨迹和日志是定位工程问题的备忘录和总结代码开发项目管理经验的基本素材,是工程交验收资料的重要组成部分 1.1 依赖表 包名含义安装方式系统包ostime 1.2 全局变量表 变量名含义初值log_file日志保存路径./recor…

Python代码优化(1):天气预报获取

天气预报获取模块 基于http://www.weather.com.cn/做了代码优化,每个函数功能更加明确,更加适合单独集成。接口也进行了优化,比网络上博主抄来抄去的源码要好一些。 改进点:获取天气拆成了多个函数,多次保存csv文件不…

proxy_pool开源项目攻克学习

开源项目攻克学习之proxy_pool 1. 学习背景 爬虫线程池,但是网络上付费的又很麻烦,于是在开源网站上找到一个版本进行学习。 https://github.com/jhao104/proxy_pool 本人操作系统deepin,有遇到一些问题,希望可以跟大家分享一…

pip 指定镜像源 指定版本 批量安装

要用 pip 安装指定版本的 Python 包,只需通过 操作符 指定 例如:pip install pycrypto2.6.1 将安装pycrypto2.6.1 版本。 要使用pip 批量安装,需要写requirements.txt文件,一行一个包 numpy matplotlib wxpypip install -r r…

Linux命令行下统计当前文件夹下的文件个数

统计某文件夹下文件的个数 ls -l |grep “^-”|wc -l 统计某文件夹下目录的个数 ls -l |grep “^d”|wc -l 统计文件夹下文件的个数,包括子文件夹里的。 ls -lR|grep “^-”|wc -l 统计文件夹下目录的个数,包括子文件夹里的。 ls -lR|…

proxy_pool开源项目攻克学习2:服务器架设

proxy_pool开源项目攻克学习2:服务器架设 在这个文章proxy_pool开源项目攻克学习中,我们完成了本地的proxy_pool架设。现在我们将他转移到服务器上。 硬件环境准备 腾讯centos服务器。 软件环境准备 redispython3.7proxy_pool开源项目 安装过程 总…

python opencv安装

opencv安装 pip install opencv-python依赖安装 # libglvnd-1:1.3.2-1.tl3.x86_64 # libglvnd-glx-1:1.3.2-1.tl3.x86_64 # libxshmfence-1.3-2.tl3.x86_64 # mesa-libGL-20.3.3-2.tl3.x86_64 # mesa-libglapi-20.3.3-2.tl3.x86_64yum install libGL

nodejs轻量服务器后端

nodejs轻量服务器后端 搭建思路 server.js主函数 mine.js配置文件 index.html 测试网页 目录结构 __./|__ test1|__ index.html|__ mine.js|__ server.jsserver.js文件 var PORT 8080; //端口 var DIR test1; //用于存放html的目录var http require(http);…

[Leetcode713]乘积小于 K 的子数组

公司里偷偷刷题记录 做一下笔记 求解子数组方式: 两种方案: 通用方案就是前缀和查找 另一种是递增序列可用的滑动窗口 有些题目如果给出来的数字有正,负。那么一定就要转化成前缀和。 如果是全正数组,可以采用前缀和二分查找的…

[Leetcode15]三数之和

重刷一遍相向双指针 题目 leetcode15 https://leetcode.cn/problems/3sum/ 类似的题目还有leetcode16 leetcode16 解答思路 关键点 快排 双指针 1: 快速排序,之后使用双指针遍历对应的位置,求解 2: 主要是在确定了第一个值…

光学元件生产工艺流程

光学元件生产工艺流程 选胚料 – 开料(初步切割)- 清洗 - 上盘(批处理) – 切割 – 粗磨整平 – 粗检 – 细磨上盘 – 细磨 – 高速抛光 – 低速抛光 – 光胶 – 成片 – 上盘 – 成品切割 – 清洗 – 包装 粗磨阶段 选胚料: 选择光学元件的原材料,如K9,BK7玻璃等 开…

[leetcode933]最近的请求次数

每日偷偷刷题933和队列有关 思路 每来一次ping就记录时间,并返回3000s内ping的次数,本题数据量很大,正向暴力肯定是不行的。 初步思路:反向暴力,不删列表数据。从ping的下标往前推,并统计3000s的数据。 …

[leetcode]5. 最长回文子串 647. 回文子串

昨日刷题,今日补发 解题思路 中间扩展,遍历数组,以每一项为中心,或以每两项为中心,向外拓展。 学习一下pair概念,还有string的substr的用法 以下是leetcode第五题 C做法 class Solution { public:pair…