Python os.fdopen() 方法



Python OS 模块的fdopen() 方法接受文件描述符作为参数值,并返回相应的 file 对象。这允许我们执行所有已定义的操作,例如读取和写入给定的 file 对象。

术语文件描述符可以定义为一个整数值,它从内核为每个进程维护的一组打开文件中标识打开的文件。

语法

以下是 Python fdopen() 方法的语法:

os.fdopen(fd, [, mode[, bufsize]]);

参数

Python os.fdopen() 方法接受以下参数:

  • fd - 这是要返回其 file 对象的文件描述符。

  • mode - 此可选参数是一个字符串,指示如何打开文件。mode 的最常用值是 'r' 用于读取,'w' 用于写入(如果文件已存在则截断),'a' 用于追加。

  • bufsize - 此可选参数指定文件所需的缓冲区大小:0 表示无缓冲,1 表示行缓冲,任何其他正值表示使用(大约)该大小的缓冲区。

返回值

Python os.fdopen() 方法返回连接到文件描述符的打开 file 对象。

示例

以下示例显示了 fdopen() 方法的使用。在这里,我们以读写权限打开一个文件。然后,我们在读取给定文件的文本之前和之后检查 I/O 指针位置。

#!/usr/bin/python
import os, sys
# Open a file
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
# Now get a file object for the above file.
fo = os.fdopen(fd, "w+")
# Tell the current position
print ("Current I/O pointer position :%d" % fo.tell())
# Write one string
fo.write( "Python is a great language.\nYeah its great!!\n");
# Now read this file from the beginning.
os.lseek(fd, 0, 0)
str = os.read(fd, 100)
print ("Read String is : ", str)
# Tell the current position
print ("Current I/O pointer position :%d" % fo.tell())
# Close opened file
fo.close()
print ("Closed the file successfully!!")

运行上述程序时,将产生以下结果:

Current I/O pointer position :0
Read String is :  b'Python is a great language.\nYeah its great!!\n'

Current I/O pointer position :45
Closed the file successfully!!

示例

要为给定的文件描述符指定行缓冲区,请将缓冲区大小的值为 1 作为参数传递给 fdopen(),如下面的代码所示。

import os

# Open a file descriptor
fd = os.open("txtFile.txt", os.O_RDWR|os.O_CREAT)

# file object with 1-byte line buffer
with os.fdopen(fd, 'w+', buffering=1) as file:
   file.write("This is tutorialspoint.")
   file.seek(0)
   print(file.read())

上述程序将显示以下输出:

This is tutorialspoint.
python_files_io.htm
广告