【发布时间】:2020-03-25 15:35:24
【问题描述】:
当我需要在可能保留的目录中创建文件时,我使用tempfile.mkstemp,但我不关心文件名。它应该只是迄今为止不存在的东西,并且有前缀和后缀。
到目前为止我忽略的文档的一部分是
什么是操作系统级别的句柄,应该如何使用它?
背景
我一直是这样使用的:
from tempfile import mstemp
_, path = mkstemp(prefix=prefix, suffix=suffix, dir=dir)
with open(path, "w") as f:
f.write(data)
# do something
os.remove(path)
到目前为止,它运行良好。然而,今天我写了一个小脚本,它会生成巨大的文件并删除它们。脚本中止执行并显示消息
OSError: [Errno 28] No space left on device
当我检查时,有 80 GB 可用空间。
我怀疑os.remove 只是“标记”了要删除的文件,但这些文件没有被正确删除。下一个怀疑是我可能需要在操作系统真正释放磁盘空间之前关闭操作系统级别的句柄。
【问题讨论】:
标签: python-3.x temporary-files python-os