临时目录在程序运行间持久化

9 投票
6 回答
3937 浏览
提问于 2025-04-17 09:51

我需要一个临时文件夹,但我想完全控制它的创建和删除。

我会用这个文件夹来放一些git仓库,我想监控这些仓库的新提交,所以我需要把它们永久存放在某个地方。

因此,我想避免使用/tmp这个文件夹,因为它可能会被用户清空。这样做有什么好的方法吗?

6 个回答

8

tempfile.mkdtemp 这个函数会为你创建一个临时文件夹,并返回这个文件夹的名字。默认情况下,它会在 /tmp 这个地方创建(在类Unix系统上),而且是以“最安全的方式”来创建的,只有调用这个函数的用户才能读、写和查看这个文件夹。

>>> d = tempfile.mktemp()
>>> with open(os.path.join(d, "secret")) as output:
...     output.write("Ha, you can't read this!")

顺便提一下,在默认设置的Unix/Linux系统上,用户不能随便编辑或删除其他用户在 /tmp 里的文件。

8

我觉得最好的做法是使用 tempfile.mkdtemp

如果你不想使用 /tmp 这个目录的话,可以利用 prefix 这个参数来设置你想要的前缀:

import tempfile
tempfile.mkdtemp(prefix=<your_preferred_directory>)

补充一下:关于存放你应用程序配置、缓存数据等的最合适的目录,如果你在使用Linux系统,请查看一下 XDG基础目录规范

0

https://pypi.python.org/pypi/platformdirs 是一个Python包,它提供了一个可以在不同操作系统上使用的 user_cache_dir 函数。

撰写回答