Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中生成临时文件并销毁_Python_Django - Fatal编程技术网

Python 如何在django中生成临时文件并销毁

Python 如何在django中生成临时文件并销毁,python,django,Python,Django,我正在做一些文件处理,为了生成文件,我需要从现有数据生成一些临时文件,然后使用该文件作为函数的输入 但我不知道我应该在哪里保存该文件,然后删除它 是否存在在用户会话后自动删除文件的临时位置您应该使用模块中的某些内容。我认为它拥有您所需要的一切。Python正是为了实现这一目的。您不必担心文件的位置/删除,它可以在所有受支持的平台上运行 有三种类型的临时文件: tempfile.TemporaryFile-只是基本的临时文件 tempfile.NamedTemporaryFile-“此函数的操作

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

但我不知道我应该在哪里保存该文件,然后删除它


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

您应该使用模块中的某些内容。我认为它拥有您所需要的一切。

Python正是为了实现这一目的。您不必担心文件的位置/删除,它可以在所有受支持的平台上运行

有三种类型的临时文件:

  • tempfile.TemporaryFile
    -只是基本的临时文件
  • tempfile.NamedTemporaryFile
    -“此函数的操作与
    TemporaryFile()
    的操作完全相同,只是保证文件在文件系统中有一个可见的名称(在Unix上,目录项没有取消链接)。可以从文件对象的name属性检索该名称。”
  • 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上兼容