如何在 Python 中从文件读取特定行
Heys
2023年1月30日
-
fileobject.readlines()
读取小型文件的特定行 -
文件对象中的
for
循环以读取 Python 中的特定行 -
linecache
模块读取 Python 中的特定行 -
从 Python 中的大文件读取特定行期间的
enumerate
函数
在 Python 中读取文件的一种常见方法是完全读取文件,然后处理特定行。用 Python 读取文件速度很快,例如,写入 100MiB 文件大约需要 0.67 秒。但是,如果文件大小超过 100MB,则将其读入内存时将导致内存问题。
Python 有 3 种内置方法,可从文件中读取特定行,如以下各节所述。
fileobject.readlines()
读取小型文件的特定行
fileobject.readlines()
将所有文件内容读取到内存中。它可以使用列表切片来读取特定行。
如果我们只需要读取第 10 行,
with open("file.txt") as f:
data = f.readlines()[10]
print(data)
如果我们需要读取 10 到 100 行,
with open("file.txt") as f:
data = f.readlines()[10:100]
print(data)
文件对象中的 for
循环以读取 Python 中的特定行
对于文件对象来说,for line
也是小文件的快速解决方案。
lines = [10, 100]
data = []
i = 0
with open("file.txt", "r+") as f:
for line in f:
if i in lines:
data.append(line.strip)
i = i + 1
print(data)
linecache
模块读取 Python 中的特定行
linecache
用于读取许多文件,可以重复或提取许多行:
import linecache
data = linecache.getline("file.txt", 10).strip()
字符串方法 strip()
返回一个字符串,该字符串从两端去除空格。
linecache
模块允许你在使用缓存进行内部优化的同时从 python 源文件获取任何行,这是从单个文件读取多行的一种常见做法。追溯模块使用它来检索格式化的追溯中包含的源代码行。
从 Python 中的大文件读取特定行期间的 enumerate
函数
读取文件时,较大的文件可能会导致诸如内存不足之类的问题。在这种情况下,我们可以使用 enumerate()
:
with open("file.txt") as f:
for i, line in enumerate(f):
pass # process line i
请注意,对于第 n 行,i = n-1
。
enumerate()
函数用于将可遍历的数据对象(例如列表,元组或字符串)组合到索引序列中,同时列出数据和数据下标,通常在 for
中使用循环。