tempfile 模块: 创建/操作 临时文件(夹) -- Python




empfile 模块是用来创建/操作 临时文件(夹)的。有时候我们希望在程序运行过程中需要生成一个临时文件,并在某一个时间删除它。这就需要用到 tempfile 模块了。


tempfile.mkstemp


mkstemp(suffix=None, prefix=None, dir=None, text=False)

  • suffix: 是指定临时文件的后缀,比如’ .h5’, '.txt’ 等。
  • prefix: 是指定文件的前缀,比如 prefix = ‘t’, 那么得到的文件名称的第一个字符就是 ’t’。如果是 None 就是没有前缀。
  • dir: 是指定临时文件生成的目录所在。None 将根据系统环境变量 TMPDIR, TEMP 或者 TMP 的设置来保存临时文件。
  • text: 是指定是否以文本形式操作文件,False 则是二进制形式。
返回的是两个参数,一个是 fd,一个是 fname,fd 是文件描述符,fname 是指生成的文件的绝对路径。
生成的文件的名称是随机的,如果你指定了 suffix=‘.txt’ 和 prefix=‘A’,那么文件名称就是 ’AXXXXXXX.txt’ 的格式。


文件描述符是什么?


内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。


文件描述符在同一进程下与文件是对应的,一个描述符只指向一个文件,但是一个文件可以被多个文件描述符关联。

同一进程下,文件描述符是不可重复的。但是不同进程可以有一样的文件描述符。它们也可以指向不同的文件。


如何删除创建的临时文件?

首先需要使用 os.close(fd) 方法用于关闭指定的文件描述符 fd,

然后再使用 os.remove(fname) 删除临时文件。



创建的临时文件有什么特点?


函数描述中这样写道:

  • The file is readable and writable only by the creating user ID.
  • If the operating system uses permission bits to indicate whether a file is executable, the file is executable by no one. The file descriptor is not inherited by children of this process.





reference

https://blog.csdn.net/weixin_43490422/article/details/107555737