gpt4 book ai didi

python - 如何使用 tempfile.NamedTemporaryFile()?

转载 作者:IT老高 更新时间:2023-10-28 21:55:24 25 4
gpt4 key购买 nike

我正在编写一个 Python 脚本,该脚本需要创建大约 50 个不同的临时文件,这些文件在脚本执行过程中经常被附加并在最后合并。我确信 tempfile 模块可以满足我的需要,但我无法通过阅读文档来弄清楚如何。

我想使用临时文件(而不是变量)来节省系统内存,因为随着脚本处理数以万计的其他文件,这些数据 block 会变得越来越大。

以下代码块是我目前用来在非临时目录中(临时)创建这些文件的 hack:

item = (string from another file)   # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
totalitems.add(item)
with open(tmpfile, 'w') as itemfile:
output = some stuff
tmpfile.write(output)
else:
with open(tmpfile, 'a') as itemfile:
output = different stuff
tmpfile.write(output)

我认为我需要的是 tempfile.NamedTemporaryFile()。根据documentation :

That name can be retrieved from the name member of the file object.

很遗憾,我不明白这意味着什么。当我在我正在处理的文件中再次遇到相应的“项目”时,我只需要能够再次调用每个文件。我认为这是相当直截了当的,我只是很密集。万一这很重要,我有适用于 Python 2.7.1 和 3.2.3 的这个脚本的版本。我只需要一个或另一个工作;我创建这两个只是作为一个学习练习。

最佳答案

"That name can be retrieved from the name member of the file object."

表示您可以像这样获取创建的临时文件的名称:

In [4]: import tempfile

In [5]: tf = tempfile.NamedTemporaryFile()
In [6]: tf.name # retrieve the name of the temp file just created
Out[6]: 'c:\\blabla\\locals~1\\temp\\tmptecp3i'

注意:默认情况下,文件在关闭时会被删除。但是,如果 delete 参数为 False,则不会自动删除文件。见 Python docs了解更多信息。

由于您可以检索要创建的 50 个临时文件中的每一个的名称,因此您可以将它们保存在例如列表中,然后再使用它们(如您所说)。请务必相应地设置 delete 值,以便文件在您关闭它们时不会消失(以防您打算关闭,然后再重新打开它们)。

我在这里更详细地解释了如何创建临时文件名 Best way to generate random file names in Python

关于python - 如何使用 tempfile.NamedTemporaryFile()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com