Ausführen von Python 2.7-Code mit Python 2.6

8

Ich habe diese einfache Python-Funktion, die eine Zip-Datei (plattformunabhängig) extrahieren kann

%Vor%

Das geht gut mit Python 2.7 aber scheitert mit Python 2.6:

%Vor%

Ich fand diese Vorschläge, dass ein Upgrade erforderlich ist 2.6 - & gt; 2.7 Ссылка

Aber ist es möglich, den obigen Code so zu portieren, dass er mit Python 2.6 funktioniert und trotzdem plattformübergreifend bleibt?

    
user3165964 21.01.2014, 20:30
quelle

2 Antworten

15

Was ist mit:

%Vor%

contextlib.closing macht genau das, was die fehlende __exit__ -Methode für ZipFile tun sollte. Nennen Sie die Methode close

    
sebastian 21.01.2014, 20:36
quelle
1

zipfile-Modul Wurde in Python-Version 2.7.1 geändert:

  • Wenn die Datei mit dem Modus 'a' oder 'w' erstellt und dann ohne geschlossen wird Hinzufügen von Dateien zum Archiv, die entsprechenden ZIP-Strukturen für Ein leeres Archiv wird in die Datei geschrieben.
  • ZipFile ist auch ein Kontextmanager und unterstützt daher die mit Aussage.

Ich habe dasselbe Problem gelöst, indem ich den Kontextmanager "with" für Python 2.6 nicht verwende.

%Vor%

Der with context manager schützt vor Ressourcenlecks, also würde ich in Python 2.6 zumindest noch einen try empfehlen / endlich die Ressource zu schließen.

    
Pavan Gupta 19.08.2015 13:59
quelle