Python | os.closerange 函数

Lasted 2020-12-08 10:06:21

os.closerange 函数关闭从 fd_low 到 fd_high 间的文件描述符,并忽略错误。包括 fd_low 但 不包括 fd_high。

文件描述符是一个数字,用于唯一标识计算机操作系统中打开的文件。它描述了数据资源,以及如何访问该资源。

在类Unix操作系统上,默认情况下,前三个文件描述符为STDIN(标准输入 0),STDOUT(标准输出 1)和STDERR(标准错误 2)。

可以用 io.fileno() 可以获得 file object 所对应的文件描述符。需要注意的是,直接使用文件描述符会绕过文件对象的方法,会忽略如数据内部缓冲等情况。

函数定义

os.closerange(fd_low, fd_high)
# 函数定义

def closerange(fd_low: int, fd_high: int) -> None: ...

参数

  • checkfd_low - 开始文件描述符。
  • checkfd_high - 结束文件描述符,不包括这个值。

返回值

  • checkNone - 无。

示例1: - 使用 os.closerange() 函数关闭文件描述符。

# coding=utf-8

# Python3 代码
# 讲解怎样使用 os.closerange() 函数关闭系列文件描述符

# 引入 os 库
import os


# 获取多个文件描述符
path1 = "foo1.txt"
path2 = "foo2.txt"
path3 = "foo3.txt"
path4 = "foo4.txt"
path5 = "foo5.txt"

fd1 = os.open(path1, os.O_WRONLY)
fd2 = os.open(path2, os.O_WRONLY)
fd3 = os.open(path3, os.O_WRONLY)
fd4 = os.open(path4, os.O_WRONLY)
fd5 = os.open(path5, os.O_WRONLY)

# 关闭所有文件描述符 fd
fd_low = min(fd1, fd2, fd3, fd4, fd5) 
fd_high = max(fd1, fd2, fd3, fd4, fd5) 
os.closerange(fd_low, fd_high + 1) 
print("All file descriptor closed successfully") 
All file descriptor closed successfully

示例2: - 使用另外一种更有效的方式,通过 os.close 方法关闭所有文件。

# coding=utf-8

# Python3 代码
# 讲解怎样使用 os.closerange() 函数关闭系列文件描述符

# 引入 os 库
import os


# 获取多个文件描述符
path1 = "foo1.txt"
path2 = "foo2.txt"
path3 = "foo3.txt"
path4 = "foo4.txt"
path5 = "foo5.txt"

fd1 = os.open(path1, os.O_WRONLY)
fd2 = os.open(path2, os.O_WRONLY)
fd3 = os.open(path3, os.O_WRONLY)
fd4 = os.open(path4, os.O_WRONLY)
fd5 = os.open(path5, os.O_WRONLY)

# 关闭所有文件描述符 fd
fd_low = min(fd1, fd2, fd3, fd4, fd5) 
fd_high = max(fd1, fd2, fd3, fd4, fd5) 

for fd in range(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass

print("All file descriptor closed successfully") 
All file descriptor closed successfully