Python中的文件描述符是什么?
Python中的文件描述符是标识符,表示在操作系统内核中打开的文件,并保存在文件表中。通常,它们具有非负值。负的结果表示错误或“没有值”情况。它们支持各种与文件相关的操作。总的来说,描述符是Python用于维护属性的特殊方法。
它们主要帮助访问文件和其他输入/输出设备,如网络套接字或管道。
这些操作在以下文件描述符所标识的I/O流上进行:-
更多Python相关文章,请阅读:Python 教程
close (fd)
文件描述符关闭。该函数必须与由open()或pipe()返回的文件描述符一起使用,因为它适用于低级I/O。使用popen(),fdopen()或内置函数open()返回的文件对象的close()方法来关闭文件。
示例
以下是close(fd)的示例:-
import os
file = "TutorialsPoint.txt"
file_Object = open(file, "r")
fd = file_Object.fileno()
print("%s的文件描述符是%s" % (file,fd))
os.close(fd)
输出
以下是上面代码的输出:-
TutorialsPoint.txt的文件描述符是3
dup (fd)
返回文件描述符fd的副本。
示例
以下是dup(fd)的示例:-
import os
file = "TutorialsPoint.txt"
#打开文件并获得文件描述符
fd = os.open(file, os.O_WRONLY)
print("文件描述符:", fd)
#复制文件描述符
dup_fd = os.dup(fd)
print("重复的文件描述符:", dup_fd)
#关闭文件描述符
os.close(fd)
os.close(dup_fd)
print("文件描述符已成功复制")
输出
以下是上面代码的输出:-
文件描述符:3
重复的文件描述符:4
文件描述符已成功复制
dup2(fd,fd2)
将文件描述符fd复制到fd2,必要时首先关闭第二个。
示例
以下是dup2(fd,fd2)的示例:-
import os
file = "TutorialsPoint.txt"
# opening the file and getting the file descriptor
fd = os.open(file, os.O_RDWR)
print("file descriptor:", fd)
# truncating the file
f = os.ftruncate(fd, 10)
print("File truncated successfully.")
# Closing the file descriptors
os.close(fd)
输出
以下是上述代码的输出 −
file descriptor: 3
File truncated successfully.
getcwd()
返回表示当前工作目录的字符串。
示例
以下是getcwd()的示例 –
import os
# Get the current working directory.
current_path = os.getcwd()
print("Current Directory Path:", current_path)
输出
以下是上述代码的输出 −
Current Directory Path: /home/user/
import os
file = "TutorialsPoint.txt"
# 打开文件,获得文件描述符
fd = os.open(file, os.O_RDWR)
# 打印原始文件的大小
print("文件的大小(以字节为单位)为:" , os.stat(fd).st_size)
# 要将文件截断到的字节数的长度
l = 5
os.ftruncate(fd, l)
# 打印文件的内容
size = os.stat(fd).st_size
print(os.read(fd, size).decode("utf-8"))
# 打印文件的大小(以字节为单位)
print("文件的大小(以字节为单位)为:" , os.stat(fd).st_size)
输出
以下是上述代码的输出
文件的大小(以字节为单位)为: 206
This
文件的大小(以字节为单位)为: 5
lseek( fd , pos , how )
将文件描述符 fd 的当前位置设置为位置 pos,由 how 修改:将位置设置为相对于文件开头;将其相对于当前位置设定;以及将其相对于文件结尾设定。
示例
以下是 lseek(fd,pos,how) 的示例
import os
file = "TutorialsPoint.txt"
# 打开文件,获得文件描述符
fd = os.open(file, os.O_RDWR|os.O_CREAT)
# 提供字符串
string = '欢迎来到教程点......谢谢!'
# 将字符串转换为字节数组
l = str.encode(string)
# 将字符串写入文件
os.write(fd,l)
# 从开头查找文件
os.lseek(fd,0,0)
# 读取文件
string = os.read(fd, 11)
print(string)
os.close(fd)
输出
以下是上述代码的输出
b'Welcome to '