临时目录在程序运行间持久化
我需要一个临时文件夹,但我想完全控制它的创建和删除。
我会用这个文件夹来放一些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
函数。