2010-08-31 55 views
13

在python web應用程序中,我將一些東西打包在一個zip文件中。我希望完整地在內存中完成,而不用接觸磁盤。只要我創建一個平面目錄結構,就可以使用ZipFile.writestr,但是如何在zip內創建目錄?如何在不觸摸磁盤的情況下創建帶目錄的內存zip文件?

我正在使用python2.4。

http://docs.python.org/library/zipfile.html

+4

您是否嘗試過簡單地設置文件的文件名以添加到'directory/filename.ext'? – theomega 2010-08-31 15:01:31

+0

@theomega是正確的。 – mahmoud 2010-08-31 18:20:35

回答

25

什麼'theomega'在我原來的帖子的評論中說,在文件名中添加一個'/'是不對的。謝謝!

from zipfile import ZipFile 
from StringIO import StringIO 

inMemoryOutputFile = StringIO() 

zipFile = ZipFile(inMemoryOutputFile, 'w') 
zipFile.writestr('OEBPS/content.xhtml', 'hello world') 
zipFile.close() 

inMemoryOutputFile.seek(0) 
+2

請注意,如果你使用python 3,那麼你會想使用['BytesIO'](https://docs.python.org/ 3 /庫/ io.html)。 – Panda 2015-06-11 15:19:36

+0

如果你只是想讓文件夾沒有文件,最後留下'/'。 – 2018-01-26 09:41:01

1

使用StringIO。它是apparently好的將它們用於zipfiles。

+0

我們也是這樣做的。非常好地工作。 – 2010-08-31 15:47:04

+0

這個答案已過時,是否應該降低投票率? – AnotherParker 2016-01-24 02:46:00

+1

@AnotherParker如果你有一個更現代的解決方案,請發佈,我會upvote – RPGillespie 2017-10-17 18:06:42

相關問題