python模块推荐[15]tempfile创建随机临时文件夹和随机文件

场景

tempfile模块是python的内置模块无需安装。可以帮你创建随机、不重名的文件和文件夹。

注意事项

  1. 默认参数下,不要去找临时文件或临时文件夹,因为程序退出时该临时文件和临时文件夹都会被删除。
    默认创建的文件和文件夹是看不到的,仅仅存在脚本运行期间,而且运行期间也是不可见得,因为他没有使用文件系统表。
  2. 如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择。其他的应用程序是无法找到或打开这个文件的,因为它并没有引用文件系统表。用这个函数创建的临时文件,关闭后会自动删除。

创建自动删除的临时文件

1
2
3
4
5
6
import tempfile

f = tempfile.NamedTemporaryFile(mode='w+b')
f.write("hello,world. weixin: pythonperl")
print(f.name)
f.close()

你在/tmp目录是找不到该文件的。

delete=False 创建不删除的临时文件,可以找到的临时文件

1
2
3
4
5
6
import tempfile

f = tempfile.NamedTemporaryFile(mode='w+b', delete=False)
f.write("hello,world. weixin: pythonperl")
print f.name
f.close()

你在/tmp目录下是可以找到该文件的

创建不被删除的临时目录

1
2
3
import tempfile
dirname = tempfile.mkdtemp()
print(dirname)

其他一些方法 ‘gettempdir’, ‘gettempprefix’, ‘mkdtemp’, ‘mkstemp’, ‘mktemp’, ‘tempdir’, ‘template’

1
2
import tempfile
print(tempfile.__all__)

输出:

1
['NamedTemporaryFile', 'TemporaryFile', 'SpooledTemporaryFile', 'mkstemp', 'mkdtemp', 'mktemp', 'TMP_MAX', 'gettempprefix', 'tempdir', 'gettempdir']

查看文件的默认位置,

获取系统的临时目录的位置

1
2
3
import tempfile
dirname = tempfile.gettempdir()
print(dirname)

参考

  1. https://docs.python.org/3/library/tempfile.html
  2. https://python3-cookbook.readthedocs.io/zh_CN/latest/c05/p19_make_temporary_files_and_directories.html