【问题标题】:Create a temporary file with unique name using Python 3?使用 Python 3 创建一个具有唯一名称的临时文件?
【发布时间】:2018-08-09 21:07:22
【问题描述】:

我想创建一个具有特定名称的临时文件(如果可能的话,具有特定的扩展名)。

例子:

-mytempfile.txt
-mytempfile2.xml

我一直在阅读临时文件库,但据我所知我只能设置以下参数

(mode='w+b', buffering=None, encoding=None, newline=None, suffix=None, prefix=None, dir=None)

【问题讨论】:

  • 如果您对一个不存在的文件执行 fopen,它将创建它。您可以在程序结束时将其删除
  • 你试过什么?
  • @RemyJ OP 通过列出 tempfile 包和关于丢失参数的问题显示了努力。
  • 检查NamedTemporaryFile。它不提供名称规范,但您可以使用生成的名称再次打开文件。
  • @vishes_shell 好的,只是我期待一些代码。

标签: python python-3.x file temp


【解决方案1】:

按照您的要求,最安全的方法是,正如 Dan 指出的那样,无需为文件指定任何名称,我只使用 OP 在问题中要求的后缀和前缀。

import os
import tempfile as tfile
fd, path = tfile.mkstemp(suffix=".txt",prefix="abc") #can use anything 
try:
    with os.fdopen(fd, 'w') as tmpo:
        # do stuff with temp file
        tmpo.write('something here')
finally:
    os.remove(path)

要了解更多关于安全方面的信息,您可以参考link

如果您不能使用 os 并且需要执行这些操作,请考虑使用以下代码。

import tempfile as tfile
temp_file=tfile.NamedTemporaryFile(mode="w",suffix=".xml",prefix="myname")
a=temp_file.name

temp_file.write("12")
temp_file.close()

a 将为您提供文件的完整路径,例如:

'/tmp/mynamesomething.xml'

如果您最后不想删除文件,请使用:

temp_file=tfile.NamedTemporaryFile(delete=False) #along with other parameters of course.

【讨论】:

  • 请注意,您不必关心文件的名称。事实上,您指定一个完整的临时文件名以确保该名称是并且始终是唯一的,这一点至关重要。强烈建议使用tempfile,因为它会自动保证 tempfile 的唯一性,并且它还会在自身之后自动清理。
  • @Dan Farrell 感谢您的建议,并进行了编辑以包含这一重要点。
  • 谢谢@Inder 我会看看你提供给我的链接。另外,如果你们想了解全貌。我只是在对原始帖子的评论中解释了为什么要创建具有特定名称的临时文件。
  • @jajdp 更新了我的答案,请检查它是否满足您的要求
  • 感谢您更新的答案,实际上我目前正在寻找新的方法来实现我想要的。您的代码正在帮助我更好地理解这一点。我暂时给你一个大拇指。这可能需要几天时间......当我有一个可靠的答案并了解什么是最好的方法时,我会更新这篇文章。谢谢~
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 2020-11-11
相关资源
最近更新 更多