Я просмотрел примеры и, похоже, не нашел подходящего.
Хотите разархивировать файл в памяти во временный каталог с помощью Python mkdtemp()
.
Что-то вроде этого кажется интуитивно понятным, но я не могу найти правильный синтаксис:
import zipfile
import tempfile
zf = zipfile.Zipfile('incoming.zip')
with tempfile.mkdtemp() as tempdir:
zf.extractall(tempdir)
# do stuff on extracted files
Но это приводит к:
AttributeError Traceback (most recent call last)
<ipython-input-5-af39c866a2ba> in <module>
1 zip_file = zipfile.ZipFile('incoming.zip')
2
----> 3 with tempfile.mkdtemp() as tempdir:
4 zip_file.extractall(tempdir)
AttributeError: __enter__
with
иas
. Он возвращает имя пути в виде строки, а не диспетчера контекста. Прочтите это – › Python: почему я получаю AttributeError: __enter__ а> - person Mantas Kandratavičius   schedule 05.01.2021mkdtemp()
не возвращает диспетчер контекста. Он возвращает путь. Вы должны справиться с этим вручную. И это также не работает в памяти, за исключением того, что ваш временный каталог находится на RAM-диске. - person Klaus D.   schedule 05.01.2021tempfile.TemporaryDirectory
. менеджер контекста. Но на самом деле, в зависимости от того, что вы пытаетесь сделать, есть большая вероятность, что вам не нужно сначала распаковывать zip, чтобы сделать это. - person Ondrej K.   schedule 05.01.2021