zipfile, извлекающий файлы со специальными символами в имени файла - PullRequest
0 голосов
/ 06 апреля 2020

python 3.7 zipfile.extractall создает исключение, когда любое имя файла в zip-архиве содержит нераспознанный символ, например,

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2014' in position 127: ordinal not in range(256)

Это происходит в _extract_member, в частности:

with self.open(member, pwd=pwd) as source, \
     open(targetpath, "wb") as target:
    shutil.copyfileobj(source, target)

По крайней мере в Ubuntu 18.x командная строка unzip обычно не жалуется.

try...except не вариант, так как распаковка останавливается в точке исключения.

Это лучший способ обойти это, чтобы использовать extract в al oop и выполнить исправление имени файла? Другим вариантом является использование выноски оболочки для распаковки, но это не pythoni c.

...