python - 使用 python 中的 readline() 读取特定行

标签 python

在 python 中使用 readline() 时是否可以指定读取哪一行?当我运行以下代码时,我得到第 1、2、3 行,但我想阅读第 2、6、10 行

def print_a_line(line, f):
    print f.readline(line)

current_file = open("file.txt")

for i in range(1, 12):
    if(i%4==2):
        print_a_line(i, current_file)

最佳答案

不,你不能那样使用readline。相反,跳过不需要的行。您必须通读整个文件,因为您无法提前知道从何处寻求读取特定行(除非换行符出现在某个常规偏移量中)。您可以使用 enumerate 来确定您在哪一行,因此您只需读取文件一次,并且可以在您不关心的位置之后停止。

with open('my_file') as f:
    for i, line in enumerate(f, start=1):
        if i > 12:
            break
        if i % 4 == 0:
            print(i, line)

如果您知道每一行都有特定的字节长度,您可以查找给定行的特定位置,而不是遍历这些行。

line_len = 20  # bytes

with open('my_file', 'rb') as f:
    for i in range(0, 13, 4):
        f.seek(i * line_len)
        print(f.read(line_len).decode())

关于python - 使用 python 中的 readline() 读取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721089/

相关文章:

Python - 将附加反斜杠添加到文件路径

python - Sprite 碰撞和杀死 Sprite

Python pandas 几种DataFrame最佳实践

python - 在python中解析具有多个孙子的xml文档

python - 如何在 MongoEngine 的另一个 EmbeddedDocument 中推送一个 EmbeddedDocument?

Python 除了 UnicodeError?

python - 使用 python 和 eyed3 创建新的 ID3 标签

Python pop() 与 pop(0)

Python正则表达式查找子字符串

python - 使用正则表达式删除字符串中的数字