2016-10-01 91 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()'。 –