2013-02-01 34 views
2

ZipFile.extract(member[, path[, pwd]])是Python 2.6中引入的新功能。出於某種原因,我需要在Python 2.4.3中實現ZipFile.extract(2.4.3不能處理ZipFile,但只是一些屬性)。如何讓Python 2.4.3能夠提取Python 2.6中引入的ZIP文件?

我想明確導入zipfile.py在我需要使用提取功能的python腳本。

我的考慮是我不知道zipfile.py中是否有與Python 2.4.3標準不兼容的新語法或新功能。

有沒有另一種方法呢?

預先感謝您!

+0

你試過了嗎?通常情況下,最好是複製你想要的新函數,而不是用這種方法替換整個模塊,但是無論哪種方式,只要測試一下,看看它是否有效就比上網並要求其他人猜測更容易無論它是否會工作。 – abarnert

回答

2

ZipFile.extract()可以通過使用ZipFile.open(),open()shutil.copyfileobj()來模擬。根據所使用的Python版本,該功能甚至可以猴子修補到ZipFile中。

if PythonVersion < 2.6: # obviously not how it's done 
    def myextract(self, member, path=None, pwd=None): 
    ... 
    zipfile.ZipFile.extract = myextract 
+0

+1。值得注意的是,2.6中'Zipfile.extract'的代碼是非常簡單的純Python,並且可以從OP鏈接的源代碼中複製和粘貼,而無需複製整個文件。 – abarnert