python2.7读取.7z压缩的文件
来源:互联网 发布:广电网络运维体系建设 编辑:程序博客网 时间:2024/05/22 22:21
撰写时间:2017.8.4
系统环境
系统:ubuntu14.04
开发环境:python2.7
实现功能:读取.7z压缩文件夹中的所有文件
使用第三方包:pylzma和py7zlib
注:pylzma包含py7zlib包,所以只需要安装pylzma即可
安装第三方包pylzma
pip install pylzma
安装和测试过程如下:
使用py7zlib包读取文件
首先贴一下该包的github地址:https://github.com/fancycode/pylzma/blob/master/py7zlib.py
由于博主并没有找到该包的任何官方文档,所以所有的api都得一边google,一边看源码,很痛苦
读取文件
fp = open("train.7z",'rb')#生成一个archive对象archive = py7zlib.Archive7z(fp)#读取文件中所有的文件名names = archive.getnames()#searchstartTime = time.time()#根据文件名返回文件的archiveFile类member = archive.getmember(names[0])end_1_time = time.time()print "search time is {}".format(end_1_time-startTime)#read data#读取文件的所有数据data = member.read()end_2_time = time.time()print "read time is {}".format(end_2_time-end_1_time)
读出的data数据就是names[0]文件的内容
问题:由于分析的文件比较大,在train.7z文件中有2w+个子文件,在读取文件的过程中会很慢
因为py7zlib的read函数是一次将文件中的所有数据全部都读出来,所以一开始我认为是读取的内容太大,导致读取文件的速度太慢。
但是最后通过分析可以得出是因为子文件的位置太靠后,才导致了文件读取速度较慢。
详情消耗时间可以看下图。
读取第一个文件:
读取第9000个文件耗时:
无奈水平太低,从他的源码中也看不出来为什么文件耗时这么大,
最后将所有的文件解压出来,然后分析的。
参考资料
[stackoverflow]Example of how to use PyLZMA:https://stackoverflow.com/questions/10701528/example-of-how-to-use-pylzma/12292596
[github]py7zlib的项目地址:https://github.com/fancycode/pylzma/blob/master/py7zlib.py
- python2.7读取.7z压缩的文件
- ubuntu下7z文件的压缩与解压
- Linux处理7z文件(压缩)的工具
- 解压/压缩一个文件的7z算法.(压的没有7z.exe强)
- 用7z压缩目录下的所有文件(保留源文件名,后缀改为7z)
- 实例展示使用Java压缩和解压缩7z文件的方法
- 7Z压缩
- 7Z压缩
- linux下zip文件、7z文件的解压和压缩
- python2.7对DICOM图像的读取
- 7z 命令行 进行单文件极限压缩与解压
- 使用7z完成文件压缩与解压缩
- Delphi 7zip 示例调用7z.dll 压缩及解压.7z文件
- 利用7z.exe压缩和解压缩
- zlib,gzip,zip,7z压缩的区别
- 7z压缩和解压的方法--java
- 一个封装了 7z 压缩解压功能的接口
- java解压7z格式的压缩包
- opencv--鼠标与滑动条
- HDU 3790 最短路径(spfa)
- time.After()---select-case小测试一例
- SharedPreference工具类
- java中的接口和内部类
- python2.7读取.7z压缩的文件
- PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
- 调用阿里云短信服务
- Jquery Validate 相关参数及常用的自定义验证规则
- 数据结构——链表(头结点循环链表)
- 欢迎使用CSDN-markdown编辑器
- map集合排序
- X Chen笔记---Centos网卡桥接 方法一(按部就班)
- DevPts持续交付系统开启试用阶段