Python zipfileエラーの問題

1388 ワード

最近は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のバグだと思いますが、詳しくはhttp://bugs.python.org/issue14315ここで議論があります.
解決策は2つあります.
一つは、このページで議論されているように、パッチを打つことです.http://bugs.python.org/file24902/fix_zipfile_extra.patch  .
具体的には/usr/lib 64/python 2に入る.6/zipfile.pyこのファイルは、351行近くでwhile extra:while len(extra)>=4:
方法2はPythonバージョンをアップグレードすることです.
Python 2.6.6でこの問題を発見しました.このPythonはLinuxが持参したバージョンで、比較的低いかもしれません.2.7.3以上のバージョンをアップグレードすると、この問題は高バージョンで解決されました.だからPythonをアップグレードするのも方法です.