Python | os.closerange 函數

最近更新時間 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
rss_feed