python zipfile read大文件非常慢,如何解决

hongger 2010-08-17 04:57:01
用zipfile的read方法,读取大文件时,耗时非常长,如何解决,代码如下:
zin = zipfile.ZipFile(destEarHome + '/' + destEarName, 'r')
makeDir(destEarHome,'temp')
tempPath=destEarHome+"/temp"
zout = zipfile.ZipFile(tempPath + '/' + destEarName, 'w')
for item in zin.infolist():
print item.filename
print 'reading file to buffer...'
print len(zin.read(item.filename))
buffer = zin.read(item.filename) #遇到大文件时将近耗时20分钟
if (item.filename != 'META-INF/weblogic-application.xml'):
print 'writing file to buffer...'
zout.writestr(item, buffer)
else:
fin = open(tempPath + '/' + 'weblogic-application-old.xml', 'wt')
print 'writing file to buffer...'
fin.write(buffer)
fin.close()
...全文
1267 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nieoding 2010-09-03
  • 打赏
  • 举报
回复
用C++写扩展模块吧,
python在处理运算上性能还是很差的,例如加解密、解压
zengna_com 2010-08-20
  • 打赏
  • 举报
回复
用命令,没有尝试过。另外python能读写7z的压缩包吗?
lizhiyu_kingsoft 2010-08-19
  • 打赏
  • 举报
回复
这,linux没有exe,但是linux能用zip,那就意味着能命令行,懂么?
hongger 2010-08-18
  • 打赏
  • 举报
回复
如果调用系统的zip命令就有系统的依赖性,比如我提供的API就不能灵活的在平台之间移植。
难道就没有好的方法吗?
wutongwutong 2010-08-18
  • 打赏
  • 举报
回复
system + zip.exe/winrar.exe 确实会有相当程度的优化,而且winrar提供的命令参数可以组合出的功能要比zipfile自提供的接口多很多
至于针对你的任务是否会有实质性优化,要你自己试试才知道
angel_su 2010-08-18
  • 打赏
  • 举报
回复
zipfile模块好像还没实现删除/更新,提供的read/write都是解压再压这样没未免效率,有兴趣嘛研究一下zip格式用2进制方式直接复制重组应该比较好。现成简便的方法,就是system(...)调度控制台版本的zip.exe,一行代码就搞定...
hongger 2010-08-18
  • 打赏
  • 举报
回复
zipfile提供的read方法好像没有分段,其实主要是想实现“修改zip里面的一个文件”,所以现在的做法是
1、创建一个新的空zip文件,
2、将原zip文件中的内容都写到新的zip中,
3、待修改的文件在修改后再写入新zip中。
现在在第二步的时候,遇到一个较大的文件,读写操作耗时20多分钟,太慢了,不知道有什么其他的替代解决方案。
期待....
QtGtk 2010-08-18
  • 打赏
  • 举报
回复
linux有 exe ?!
angel_su 2010-08-18
  • 打赏
  • 举报
回复
貌似zip.exe大部分平台都有,最通用啦...
angel_su 2010-08-17
  • 打赏
  • 举报
回复
大文件一次读入内存,自然是个问题,考虑分段read,其实没啥特别活的话别read,改用模块提供的其它方法操作吧...
iambic 2010-08-17
  • 打赏
  • 举报
回复
多大的文件?
不行换一个库试试吧。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧