首页 > 编程语言 >Python zipfile报错问题

Python zipfile报错问题

时间:2022-10-09 14:03:55浏览次数:64  
标签:Python py zipfile python2.6 报错 usr lib64


最近用Python 来读zip的压缩包 。报一个错误。

Python 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) 
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import zipfile
>>> zipfile.ZipFile('bla.apk')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/zipfile.py", line 696, in __init__
self._GetContents()
File "/usr/lib64/python2.6/zipfile.py", line 716, in _GetContents
self._RealGetContents()
File "/usr/lib64/python2.6/zipfile.py", line 772, in _RealGetContents
x._decodeExtra()
File "/usr/lib64/python2.6/zipfile.py", line 351, in _decodeExtra
tp, ln = unpack('<HH', extra[:4])
struct.error: unpack requires a string argument of length 4


这应该算是 Python的一个bug ,详细的在 http://bugs.python.org/issue14315 这里有讨论。

解决方法有两个。

一是 : 按照这个网页所讨论的, 打一个补丁 。http://bugs.python.org/file24902/fix_zipfile_extra.patch  。

具体就是 进入 /usr/lib64/python2.6/zipfile.py 这个文件 ,在 351行附近 ,把 while extra: 改成 while len(extra) >= 4:


方法二是 升级 Python版本 。

在Python 2.6.6 上发现了这个问题 。这个Python是Linux自带的版本,可能比较低。升级2.7.3 以上的版本 ,在高版本中这个问题已经被解决了。 所以升级Python也是个办法。



标签:Python,py,zipfile,python2.6,报错,usr,lib64
From: https://blog.51cto.com/u_15815563/5740297

相关文章

  • Python非root用户启动python multiprocessing的semlock,提示没有权限的解决方法
    使用进程间通信的时候Python报错为<spanstyle="font-size:18px;">Traceback(mostrecentcalllast):File"web_game_sign.py",line483,in<module>count=mu......
  • Python CSV初用
    importcsvf_w=csv.writer(open('ret.csv','wb'))f_w.writerow([t1,t2,uid,t4,last_date,reg_date])我使用的是生成CSV文件的功能。首先importcsv 模块既然是生成文......
  • 从零开始配置vim(25)——关于 c++ python 的配置
    从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿。一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。在这里向支......
  • 使用sharding 做分库分表以后,插入报错 Executing an update/delete query
    这个问题倘若没有 sharding,那就是在service层缺少了事务注解@Transaction这个问题具体看这里​ 我是跑测试类跑出来的问题,好像做分库分表,不能用测试类来测,只能通过 con......
  • Python小数精度
    需要处理金融相关数据,小数点位数要求6位,单纯使用float转化计算,导致小数位数变化且精度不满足要求,查阅相关资料后总结如下1,基础单精度型(float):在TurboC中占4个字节(32......
  • Python 生成的页面中文乱码问题
    第一保证程序源文件中的中文的编码格式,如我们把源文件的编码设置成utf8的。reload(sys)sys.setdefaultencoding(‘utf-8’)第二,告诉浏览器,我们需要用什么格式来展示......
  • 力扣219(java&python)-存在重复元素 II(简单)
    题目:给你一个整数数组 nums和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,满足nums[i]==nums[j]且abs(i-j)<=k。如果存在,返回true;否则,返回f......
  • Python函数-2V2
    一.导入$$f(x,y)=2x+3y$$上面括号里面的就是数学公式里的自变量,自变量就相当于函数里的参数。二.为什么要有参数如果一个大楼里有两种尺寸不一的窗户,显然......
  • 使用sharding做分库分表,使用jpa,发生的save不报错,数据库缺插不进去数据的问题
     先讲讲问题的诞生,我们项目起初没有引进 sharding分库,而是在项目上线前,才做的分库分表。也就是之前的业务都写好的,所以知道业务代码没有任何问题。 然后引入 sharding......
  • python中的subprocess.Popen | 9
    在收集snmp数据的过程中用到了subprocess这个模块,本来想用其他python里面关于snmp的库,还是觉得麻烦就直接调用snmpwalk来收集数据。最开始想用subprocess.call()这个函数,然而......