Python 3 – 文件 seek() 方法
在 Python 中,我们可以使用文件对象的 seek() 方法改变文件读取指针的位置。这有助于我们快速地定位文件中的特定位置,或者随机访问文件中的数据。
文件指针
在讲解 seek() 方法之前,我们先来了解一下文件指针。文件指针是一个整数值,它指向文件中下一个要读取或写入的位置。文件指针的位置可以通过文件对象的 tell() 方法获取。
例如,我们打开一个名为 example.txt
的文本文件并读取其中的内容:
# 打开文件
file = open("example.txt", mode="r")
# 读取文件内容
content = file.read()
# 获取文件指针位置
position = file.tell()
print("文件指针位置:", position)
# 关闭文件
file.close()
运行上面的代码,输出结果为:
文件指针位置: 14
由于我们在读取文件内容后并没有改变文件指针的位置,因此 position
变量的值为 14,即文件结尾的位置。
seek() 方法的语法
seek() 方法的语法如下:
file.seek(offset, whence)
其中,offset
参数指定了文件读取指针要移动的字节数,whence
参数指定了移动方式,可以取下面三个值中的一个:
0
:表示从文件开头开始移动,这是默认值。1
:表示从当前位置开始移动。2
:表示从文件结尾开始移动。
改变文件指针的位置
现在,我们来看一个简单的例子。假设我们要读取文件中的第二行数据,可以使用以下代码:
# 打开文件
file = open("example.txt", mode="r")
# 移动文件指针到第二行的开头
file.seek(10)
# 读取第二行的内容
line2 = file.readline()
print("第二行的内容:", line2)
# 关闭文件
file.close()
在这个例子中,我们首先打开文本文件,并使用 seek() 方法将文件指针移动到第二行开头的位置。然后,我们使用 readline() 方法读取该行的内容,并打印出来。
运行上面的代码,输出结果为:
第二行的内容: 2. This is the second line.
自动识别代码语言
如果你在文章中插入了代码,建议在代码块的开始处指定代码语言,以便于 markdown 格式的阅读:
```python
# 这里是 Python 代码
```
如果你不知道代码语言,也可以不标记语言,markdown 的渲染引擎可以自动识别代码语言。
随机访问文件中的数据
除了用于定位指定位置的数据外,seek() 方法还可以用于随机访问文件中的数据。例如,我们可以使用以下代码从文件中读取一定长度的数据:
# 打开文件
file = open("example.txt", mode="r")
# 移动文件指针到第二行开头
file.seek(10)
# 读取 8 个字节的数据
data = file.read(8)
print("读取到的数据:", data)
# 关闭文件
file.close()
相信你已经看懂以上代码的含义。我们使用 seek() 方法将文件指针移动到第二行的开头,然后使用 read() 方法从文件中读取 8 个字节的数据,并打印出来。
运行以上代码,输出结果为:
读取到的数据: s the se
结论
seek() 方法可以帮助我们快速地定位文件中的特定位置,或者随机访问文件中的数据。在使用 seek() 方法时,我们需要注意文件指针的位置以及移动方式。同时,我们可以指定代码语言,或者使用 markdown 的自动识别功能来呈现我们的代码,使得读者更加容易理解我们的代码实现。