tempfile.mkstemp 详解

1:tempfile 模块

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

2:tempfile.mkstemp

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

3:文件描述符是什么?

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

文件描述符在同一进程下与文件是对应的,一个描述符只指向一个文件,但是一个文件可以被多个文件描述符关联。
同一进程下,文件描述符是不可重复的。但是不同进程可以有一样的文件描述符。它们也可以指向不同的文件。

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

首先需要使用os.close(fd) 方法用于关闭指定的文件描述符 fd,
然后再使用os.remove(fname)删除临时文件。

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

函数描述中这样写道:

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.

  1. 文件的读写权限只有创建者拥有
  2. 第二句没看太懂,可能是如果操作系统使用permission bits(不知道如何翻译)去强制指定该文件的权限,那么这个文件就会变成所有人都不可以使用的了。
  3. 该进程的子进程不会继承该文件描述符。
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

little student

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值