Найти - Пользователи
Полная версия: zipfile и русские имена bug
Начало » Python для экспертов » zipfile и русские имена bug
1
evgenyl
Пишу простой IPTV плееер для линукса с программой передач на базе vlc.
И наткнулся на интересный баг
Програмку беру отсюда http://www.beholder.ru/jtv.zip
вот код
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from zipfile import ZipFile
station=u'Юмор_ТВ'
prog=ZipFile('jtv.zip')
for i in prog.infolist():
if i.filename.decode('cp866')==station+'.pdt':
print prog.read(i.filename)
вот такая ошибка

Traceback (most recent call last):
File “test.py”, line 8, in <module>
print prog.read(i.filename)
File “/usr/lib64/python2.5/zipfile.py”, line 489, in read
zinfo.orig_filename, fname)
zipfile.BadZipfile: File name in directory “&#65533;&#65533;&#65533;&#65533;_&#65533;&#65533;.pdt” and header “&#65533;&#65533;&#65533;&#65533;_&#65533;&#65533;.pdt” differ.

возможно ктото сталкивался с чемто подобным ?

ps: Python 2.5.2
evgenyl
возможно кому пригодится, имхо решение не совсем правильное, но меня устраивает
порылся в zipfile разные кодировки в заголовке и в директории cp866 и cp1251
486 строку в файле zipfile поменять с
if fname != zinfo.orig_filename:
на
if fname != zinfo.orig_filename and fname.decode('cp1251')!=zinfo.orig_filename.decode('cp866'):
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB