如何在 Python 中从文件读取特定行

Heys 2023年1月30日 2020年6月9日
  1. fileobject.readlines() 读取小型文件的特定行
  2. 文件对象中的 for 循环以读取 Python 中的特定行
  3. linecache 模块读取 Python 中的特定行
  4. 从 Python 中的大文件读取特定行期间的 enumerate 函数
如何在 Python 中从文件读取特定行

在 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 中使用循环。

相关文章 - Python File