Извлечь файлы с недопустимыми символами в имени файла с помощью PythonPython

Программы на Python
Ответить
Anonymous
 Извлечь файлы с недопустимыми символами в имени файла с помощью Python

Сообщение Anonymous »

Я использую модуль zipfile Python для извлечения ZIP-архива (например, возьмем этот файл по адресу http://img.dafont.com/dl/?f=akvaleir).

Код: Выделить всё

f = zipfile.ZipFile('akvaleir.zip', 'r')
for fileinfo in f.infolist():
print fileinfo.filename
f.extract(fileinfo, '.')
Выход:

Код: Выделить всё

Akval�ir_Normal_v2007.ttf
Akval�ir, La police - The Font - Fr - En.pdf
Оба файла недоступны после извлечения, поскольку в их именах содержатся недопустимые закодированные символы. Проблема в том, что модуль zipfile не имеет возможности указывать имена выходных файлов.

Однако «unzip akvaleir.zip» хорошо экранирует имя файла:

Код: Выделить всё

root@host:~# unzip akvaleir.zip
Archive:  akvaleir.zip
inflating: AkvalВir_Normal_v2007.ttf
inflating: AkvalВir, La police - The Font - Fr - En.pdf
Я попробовал записать вывод «unzip -l akvaleir.zip» в своей программе на Python, и эти два имени файла:

Код: Выделить всё

Akval\xd0\x92ir_Normal_v2007.ttf
Akval\xd0\x92ir, La police - The Font - Fr - En.pdf
Как я могу получить правильное имя файла, например, что делает команда unzip, без захвата вывода «unzip -l akvaleir.zip»?

Подробнее здесь: https://stackoverflow.com/questions/180 ... ith-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»