Как распаковать zip-файл в родительской папке файла в python3.x
У меня есть требование распаковать архив, выбрав его во время выполнения программы.
Я передаю zip-файл с помощью HTML input type file
в моем шаблоне, а затем использую функцию ZipFile extractall()
. Эта простейшая схема работает, однако распакованное содержимое сохраняется в корневой папке проекта (Django)
Я могу контролировать место хранения извлеченных файлов с помощью опции path
, которая, как мне кажется, немного ограничивает возможности в том смысле, что в этом случае путь к папке должен быть жестко закодирован. (Существуют и другие способы предоставления информации пути во время выполнения, но все равно потребуется вмешательство пользователя.)
Поскольку файл является inmemory, я знаю, что информация path будет недоступна, что в противном случае было бы удобно.
Есть ли способ сохранить разархивированный файл в ту же папку, из которой был выбран разархивированный файл?
Спасибо, Букн.
использовать настройки django
from django.conf import settings
zipfile.extractall(settings.BASE_DIR/{path/to/dir})
не использовать настройки django
from pathlib import Path
path_zipfile = Path({path/to/zipfile})
zipfile = Zipfile(path_zipfile)
zipfile.extractall(path_zipfile.parent / {path/to/dir})