Python 如何在django中生成临时文件并销毁
我正在做一些文件处理,为了生成文件,我需要从现有数据生成一些临时文件,然后使用该文件作为函数的输入 但我不知道我应该在哪里保存该文件,然后删除它Python 如何在django中生成临时文件并销毁,python,django,Python,Django,我正在做一些文件处理,为了生成文件,我需要从现有数据生成一些临时文件,然后使用该文件作为函数的输入 但我不知道我应该在哪里保存该文件,然后删除它 是否存在在用户会话后自动删除文件的临时位置您应该使用模块中的某些内容。我认为它拥有您所需要的一切。Python正是为了实现这一目的。您不必担心文件的位置/删除,它可以在所有受支持的平台上运行 有三种类型的临时文件: tempfile.TemporaryFile-只是基本的临时文件 tempfile.NamedTemporaryFile-“此函数的操作
是否存在在用户会话后自动删除文件的临时位置您应该使用模块中的某些内容。我认为它拥有您所需要的一切。Python正是为了实现这一目的。您不必担心文件的位置/删除,它可以在所有受支持的平台上运行 有三种类型的临时文件:
-只是基本的临时文件tempfile.TemporaryFile
-“此函数的操作与tempfile.NamedTemporaryFile
的操作完全相同,只是保证文件在文件系统中有一个可见的名称(在Unix上,目录项没有取消链接)。可以从文件对象的name属性检索该名称。”TemporaryFile()
-“此函数的操作与tempfile.SpooledTemporaryFile
的操作完全相同,只是数据在内存中进行假脱机,直到文件大小超过TemporaryFile()
,或者直到文件的max\u size
方法被调用,此时内容将写入磁盘,操作将按照fileno()
进行TemporaryFile()
>>将临时文件()作为f:
f、 写入('abcdefg')
f、 查找(0)#返回文件的开头
打印(f.read())
abcdefg
我刚刚添加了一些重要的更改:将str转换为字节,以及一个命令调用,以显示在给定路径时外部程序如何访问文件
import os
from tempfile import NamedTemporaryFile
from subprocess import call
with NamedTemporaryFile(mode='w+b') as temp:
# Encode your text in order to write bytes
temp.write('abcdefg'.encode())
# put file buffer to offset=0
temp.seek(0)
# use the temp file
cmd = "cat "+ str(temp.name)
print(os.system(cmd))
我想补充一点,Django在Django.core.files.temp中有一个内置的NamedTemporaryFile功能,建议Windows用户使用tempfile模块。这是因为Django版本在Windows中使用了O_临时标志,该标志可防止在没有提供与代码库中所述相同标志的情况下重新打开文件 使用此选项将类似于:
来自django.core.files.temp导入名称temporaryfile
temp_file=NamedTemporaryFile(delete=True)
这是一个很好的小教程,介绍如何使用内存中的文件,请参见。你能给我展示一些创建临时文件然后使用它的例子吗。我在地图上找不到它pagr@user32:该示例非常简单:您实例化其中一个类并打开文件,然后将其作为标准文件进行操作(文档中提到了一些限制,这意味着它只是临时文件等)。请注意,Django有一个类似的功能,可以在unix和windows上兼容