如何在django中生成临时文件然后销毁

Ran*_*ngh 24 python django

我正在做一些文件处理和生成文件我需要从现有数据生成一些临时文件,然后使用该文件作为我的函数的输入.

但我很困惑,我应该在哪里保存该文件,然后删除它.

用户会话后是否有文件自动删除的临时位置

Tad*_*eck 43

Python有tempfile模块用于此目的.您无需担心文件的位置/删除,它适用于所有支持的平台.

临时文件有三种类型:

  • tempfile.TemporaryFile - 只是基本的临时文件,
  • tempfile.NamedTemporaryFile- " 除了保证文件在文件系统中具有可见名称外,该函数的运行方式与此完全相同TemporaryFile()(在Unix上,目录条目未取消链接).可以从文件对象的name属性中检索该名称. "
  • tempfile.SpooledTemporaryFile- " 此函数完全正常运行TemporaryFile(),除了数据在内存中假脱机,直到文件大小超过max_size,或者直到fileno()调用文件的方法,此时内容被写入磁盘并且操作继续进行TemporaryFile(). ",

编辑:您要求的示例用法可能如下所示:

>>> with TemporaryFile() as f:
        f.write('abcdefg')
        f.seek(0)  # go back to the beginning of the file
        print(f.read())


abcdefg
Run Code Online (Sandbox Code Playgroud)


Sam*_*ges 6

我想补充一点,Django 在 django.core.files.temp 中有一个内置的 NamedTemporaryFile 功能,建议 Windows 用户使用 tempfile 模块。这是因为 Django 版本在 Windows 中使用 O_TEMPORARY 标志,这会阻止在没有提供相同标志的情况下重新打开文件,如代码库中所述

使用它看起来像:

from django.core.files.temp import NamedTemporaryFile

temp_file = NamedTemporaryFile(delete=True)
Run Code Online (Sandbox Code Playgroud)

是一个关于它和使用内存文件的很好的小教程,感谢Mayank Jain