Mam plik zip o następującej strukturze:
my_zip.zip
|-file1.txt
|-folder1/
|-file2.txt
Chcę dodać some_file
z adresu URL do folder1
. Wiem, że mogę zrobić coś takiego:
>>> import zipfile
>>> z = zipfile.ZipFile("my_zip.zip", "w")
>>> z.write("some_file")
Ale są dwie kwestie:
- Jak dodać
some_file
do tego konkretnegofolder1
? - Czy mogę pobrać
some_file
na moim komputerze i następnym użyciuz.write("path/to_my/local/some_file")
? Nie ma sposobu, aby zrobić to bezpośrednio z adresu URL na suwak?
Odpowiedzi:
1 dla odpowiedzi № 1Posługiwać się ZipFile.writestr(arcname, data)
.
Aby napisać do folderu w pliku zip, wystarczy wpisać nazwę foldername tak, jakbyś zapisywał się do folderu w folderze (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())