2010-11-24 4 views
0

Ich habe eine Datei öl_och_ål_är_gott.txt in einem Zip-Archiv namens öl_och_ål_är_gott.zip. Das Archiv wird nicht mit zipfile erstellt. Es könnte von jeder Software stammen, die ein Zip-Archiv erstellen kann.Wie kann ich Nicht-ASCII-Dateinamen in einer gezippten Datei verwenden und sie mit ZipFile in Python 2.4 extrahieren?

src = open(file_path, "rb") 
zip_file = ZipFile(src) 
for info in zip_file.infolist(): 
    print info.filename 
    ... 

druckt:

”l_och_†l_„r_gott.txt 

Wie kann ich zwingen zipfile den Namen darzustellen, wie ich es will vertreten sein?

Antwort

1

Wie die Dokumentation besagt, gibt es für ZIP-Dateien keine offizielle Kodierung der Dateinamen. Wenn Sie Unicode-Dateinamen haben (wie in Ihrem Fall), müssen Sie sie in Byte-Strings in Ihrer gewünschten Codierung konvertieren, bevor Sie sie übergeben.

DOCS

Obwohl ich weiß nicht, warum es nicht für Sie arbeiten.

>>> src = open('/Desktop/test.zip', 'rb') 
>>> zip_file = zipfile.ZipFile(src) 
>>> for info in zip_file.infolist(): 
...  print info.filename 
... 
öl_och_ål_är_gott 

Auf meiner Ubuntu-Box.

+0

Entschuldigung, ich hätte erwähnen sollen, dass das Archiv nicht mit zipfile erstellt wurde. Das Archiv stammt aus einer beliebigen Quelle. – MdaG

+0

In diesem Fall habe ich die Datei selbst ohne 'zipfile' erstellt. Und das sollte keine Rolle spielen. Bist du auf Windows oder Linux? – user225312

+0

Ich bin auf Windows, aber das Archiv könnte genauso leicht auf einem Linux- oder Mac-Rechner erstellt werden. Zumindest möchte ich in der Lage sein, mit diesen Fällen umzugehen. – MdaG

Verwandte Themen