2016-10-01 4 views
0

У меня есть почтовый файл со следующей структурой:Как добавить URL-адрес файла пронестись

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

Я хочу добавить some_fileиз URL в folder1. Я знаю, что я могу сделать что-то вроде:

>>> 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).

Чтобы записать в папку в zipfile, просто напишите имя папки, как если бы вы писали в папку в папке (So 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-файл, Archive Manager возвращает 'Ошибка при загрузке архива'. –

+0

Хорошо. Это было легко исправить. Сначала измените режим на '' a '', иначе zip-файл будет создан с нуля, потеряв предыдущие файлы, хранящиеся в нем. Во-вторых, добавьте 'z.close()' в конце скрипта. –

Смежные вопросы