python - 使用 Python mkdtemp() 解压缩到临时(内存中)目录?
问题描述
我浏览了那里的示例,似乎没有找到合适的示例。
希望使用 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__
解决方案
我已经在评论中提到了为什么您编写的代码不起作用。.mkdtemp()
仅将路径作为字符串返回,但您真正想要的是上下文管理器。
您可以使用正确的功能轻松解决此问题.TemporaryDirectory()
此函数使用与 mkdtemp() 相同的规则安全地创建临时目录。生成的对象可以用作上下文管理器(参见示例)。在临时目录对象的上下文或销毁完成后,新创建的临时目录及其所有内容都将从文件系统中删除。
zf = zipfile.ZipFile('incoming.zip')
with tempfile.TemporaryDirectory() as tempdir:
zf.extractall(tempdir)
仅此一项就可以了
推荐阅读
- eclipse-cdt - 如何以编程方式设置 Eclipse CDT 配置构建目录?
- c# - 是否还有 Microsoft Authenticator 开发 API?我该如何使用它?
- php - 如何在 echo 部分插入 php 代码。WordPress
- react-native - 无法使用 AWS S3 使用 react native 上传或获取任何文件
- python - Python pandas.get_dummies 在处理具有不同值顺序的二维数组时生成重复的字段名称
- apache-kafka - 如何使用 Kafka Streams 处理无序的事件
- php - PHP下拉搜索结果选择错误的输入
- c# - WPF 中的 Toast 通知:ToastNotificationManager.History 抛出异常 win10
- unity3d - 如何在 Unity3d 中以谷歌形式在另一部分添加价值
- python - 从命令行参数打印出瓷砖