📜  Python| os.lseek() 方法(1)

📅  最后修改于: 2023-12-03 14:46:22.065000             🧑  作者: Mango

Python | os.lseek() 方法

os.lseek() 方法用于在指定的文件描述符fd中移动文件读写指针的位置。文件读写指针指向文件开头、文件尾或任意其他位置。可以使用 lseek() 方法执行逐渐移动,或者从指定的偏移量开始(第二个参数)。

语法

以下是 os.lseek() 方法的语法:

os.lseek(fd, pos, how)
参数
  • fd: 文件描述符,为了把这个眼密的术语解释一下,就是操作系统针对每一个打开的文件所提供的一个非负整数的标识。Linux 系统下,第一个打开的文件的文件描述符是3,第二个是4,依次加1

  • pos: 文件指针移动的字节数,正负均可。正数表示正向移动,负数表示反向移动(即向前翻)

  • how: 文件指针移动的起始位置,0表示从文件头开始偏移,默认值;1表示从当前位置开始偏移;2表示从文件尾开始偏移

返回值

OS.lseek() 方法返回移动后光标的位置。如果读取发生错误,则该方法返回其发生错误前的当前位置。

示例
实例1

以下示例演示了如何使用os.lseek() 方法在文件中移动指针:

# 导入模块
import os

# 打开文件
fd = os.open('test.txt', os.O_RDWR)

# 使用 os.lseek() 方法向后移动指针
# 偏移量为5个字符
os.lseek(fd, 5, 0)
  
# 读取指针后面的内容
ret = os.read(fd, 10)
print(ret)
  
# 使用 os.lseek() 方法向前移动指针
# 偏移量为5个字符
os.lseek(fd, -5, 1)
  
# 读取指针前面的内容
ret = os.read(fd, 10)
print(ret)
  
# 关闭文件
os.close(fd)

以上代码输出如下:

b' world!\n'
b'Hello worl'

这是在输入文件中移动指针,并读取指针前后的内容,然后关闭文件。

实例2

以下示例演示了如何在 Python 程序中使用文件描述符来创建文件并写入内容:

# 导入模块
import os

# 创建文件
fd = os.open('test.txt', os.O_RDWR|os.O_CREAT)

# 写入内容
os.write(fd, b'Hello world!')

# 查看文件内容
ret = os.read(fd, 15)
print(ret)

# 关闭文件
os.close(fd)

以上代码输出如下:

b'Hello world!\n'

这个例子创建了一个文件,并在文件中写入了 "Hello world!",然后列出文件的前15个字节,并最终关闭文件。

注意事项
  • pos 的作用与常规文件指针相同。也就是说,负数表示从文件末尾开始的偏移量。
  • 本文中的示例需要预先创建一个名为 test.txt 的文件,如果文件不存在,可通过 os.O_CREAT 标志创建.