【问题标题】:Django TemporaryUploadedFile different behaviour under Python2/3 with delete=FalseDjango TemporaryUploadedFile 在 Python2/3 下的不同行为,delete=False
【发布时间】:2021-11-24 10:06:49
【问题描述】:

为什么TemporaryUploadedFile 在 Python 3 中被删除,而在 Python 2 中却保留在 /tmp/ 目录中?在使用 Python 3 时如何保持 Python 2 的行为?

from django.core.files.uploadedfile import TemporaryUploadedFile

with TemporaryUploadedFile('something.txt', 'text/plain', 0, 'UTF-8') as tmp_file:
    tmp_file_path = tmp_file.temporary_file_path()
    tmp_file.file.delete = False
    print(tmp_file_path)

在 Python 2 下运行此代码块会将文件保留在 /tmp/ 目录中,而在 Python 3 上它会被删除。

[ray@fedora tmp]$ ls | grep tmp
tmpvSmI8b.upload       #generated in Python 2
PY2 version 2.7.18
PY3 version 3.7.12
Django 1.11.29

【问题讨论】:

    标签: python django temporary-files


    【解决方案1】:

    不知道为什么这种行为不同的细节,但如果你想将文件保存在/tmp/ 中,你需要用delete=False 属性实例化NamedTemporaryFile。像这样:

    NamedTemporaryFile(delete=False, ...)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多