Python os.closerange() 方法



Python os.closerange() 方法关闭从 fd_low fd_high 的所有文件描述符。其中,fd_low 是要关闭的文件描述符的下限范围,而 fd_high 是要关闭的文件描述符的上限范围。请注意,fd_low 是独占的,而 fd_high 是独占的。

Python 中的文件描述符是表示 os 内核中打开文件的标识符,并保存在文件表中。通常,文件描述符具有非负值。负结果表示错误或“无值”条件。他们协助的主要工作是访问文件和其他输入/输出设备,如网络套接字或管道。

os.closerange() 方法比 os.close() 方法更有效,因为它允许在文件描述符范围内具有灵活性。

注意:如果在关闭给定范围内的文件描述符时发生任何错误,则会忽略该错误。此方法是在 Python 版本 2.6 中引入的。

语法

以下是 Python os.closerange() 方法的语法 -


 os.closerange(fd_low, fd_high);

参数

  • fd_low - 这是要关闭的最低文件描述符。
  • fd_high - 这是要关闭的最高文件描述符。

返回值

此方法不返回任何值。

示例 1

以下示例显示了 Python os.closerange() 方法的用法。在这里,我们将创建一个文件描述符 'os.O_RDWR|os.O_CREAT”。然后我们在文件中写入一个字符串 “This is test”。此后,我们将使用此方法关闭文件。


import os, sys
# Open a file
fd = os.open( "code.txt", os.O_RDWR|os.O_CREAT )
# Write one string
string = "This is test"
x = str.encode(string)
os.write(fd, x)
# Close a single opened file
os.closerange( fd, fd)
print ("Closed all the files successfully!!")

这将创建给定的文件 foo.txt 然后在该文件中写入给定的内容。这将产生以下结果 -

Closed all the files successfully!!

示例 2

值为 0 和 1 的文件描述符分别用作标准输入和输出。

在这里,我们将标准范围 '0' 作为 fd_low 传递,将 '1' 作为 fd_high 作为参数传递给 closerange() 方法。


import os
filedesc = os.open( "code.txt", os.O_RDWR|os.O_CREAT )
os.closerange(0,1)
print ("Closed all the files successfully!!")

在执行上述代码时,我们得到以下输出 -

Closed all the files successfully!!

示例 3

在下面给出的示例中,我们将创建一个文件描述符 'r'。这意味着读取文件。


import os
file = "code.txt"
file_Object = open(file, "r")
fd = file_Object.fileno()
print("The descriptor of the file for %s is %s" % (file, fd))
os.closerange(fd,fd)

以下是上述代码的输出 -

The descriptor of the file for code.txt is 3

示例 4

值为 2 的文件描述符是标准错误。

在这里,我们将值 '2' 作为 fd_high 作为参数传递给 closerange() 方法。


import os
filedesc = os.open( "code.txt", os.O_RDWR|os.O_CREAT )
os.closerange(0,2)
print ("Closed all the files successfully!!")

上述代码的输出如下 -

Traceback (most recent call last):
File "/home/sarika/Desktop/chown.py", line 4, in
print ("Closed all the files successfully!!")
OSError: [Errno 9] Bad file descriptor
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
OSError: [Errno 9] Bad file descriptor