当前位置:   article > 正文

python2.7读取.7z压缩的文件_python获取.7z压缩包里面的子文件夹下的文件

python获取.7z压缩包里面的子文件夹下的文件

撰写时间:2017.8.4

系统环境

系统:ubuntu14.04
开发环境:python2.7
实现功能:读取.7z压缩文件夹中的所有文件
使用第三方包:pylzma和py7zlib

注:pylzma包含py7zlib包,所以只需要安装pylzma即可

安装第三方包pylzma

pip install pylzma
  • 1

安装和测试过程如下:

这里写图片描述

使用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()
#search
startTime = 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

读出的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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/746378
推荐阅读
相关标签
  

闽ICP备14008679号