Interfejs API Pythona ZipFile wydaje się zezwalać na przekazywanie ścieżki pliku do ZipFile.write
lub ciąg bajta na ZipFile.writestr
, ale nic pomiędzy. Chciałbym móc przekazać obiekt podobny do pliku, w tym przypadku obiekt django.core.files.storage.DefaultStorage
, ale w zasadzie dowolny obiekt podobny do pliku. W tej chwili myślę, że będę musiał albo zapisać plik na dysku, albo odczytać go w pamięci. Żadne z nich nie jest doskonałe.Dodawanie obiektu podobnego do pliku do pliku Zip w języku Python
5
A
Odpowiedz
6
Masz rację, to są tylko dwie opcje. Jeśli twój obiekt DefaultStorage
jest duży, możesz chcieć najpierw zapisać go na dysku; w przeciwnym razie, chciałbym używać:
zipped = ZipFile(...)
zipped.writestr('archive_name', default_storage_object.read())
Jeśli default_storage_object
jest StringIO
przedmiot, może korzystać default_storage_object.getvalue()
.