2016-10-01 81 views
0

我有以下結構的zip文件:如何添加URL文件壓縮

my_zip.zip 
|-file1.txt 
|-folder1/ 
    |-file2.txt 

我想從URL添加some_filefolder1。我知道我可以這樣做:

>>> import zipfile 
>>> z = zipfile.ZipFile("my_zip.zip", "w") 
>>> z.write("some_file") 

但是,有兩個問題:

  • 如何添加some_file到具體folder1
  • 我應該將some_file下載到我的電腦,然後使用z.write('path/to_my/local/some_file')?有沒有辦法直接從url到zip?

回答

1

使用ZipFile.writestr(arcname, data)

要寫入zip文件中的文件夾,只需寫入文件夾名稱就好像您正在寫入文件夾中的文件夾一樣(因此folder1/some_file)。

import urllib.request 
import zipfile 

z = zipfile.ZipFile("my_zip.zip", "w") 
page = urllib.request.urlopen('http://example.com/') # Change to website 
z.writestr('folder1/some_file', page.read()) 
+0

有什麼不對。當我嘗試打開zip文件時,存檔管理器返回'加載存檔時發生錯誤'。 –

+0

好的。這很容易解決。首先,將模式更改爲'「a」',否則將從頭開始構建壓縮文件,從而丟失存儲在其中的以前的文件。其次,在腳本的末尾添加'z.close()'。 –