如何在 Python 中访问文件(.txt)中的下一行

Posted

技术标签:

【中文标题】如何在 Python 中访问文件(.txt)中的下一行【英文标题】:How to access next line in a file(.txt) in Python 【发布时间】:2013-06-12 21:44:35 【问题描述】:

我有一个文件,我打开它,然后我检查了一些东西。如果该行以“E PARAM”开头并且在某处也有“OOPS1”,那么我想检查下一行是否以“E PARAM”开头。如果没有,我将创建一个新文件并将其复制到那里,直到我没有点击另一个“E PARAM”行。由于 Python 没有 next() 选项......这里有什么可以帮助我的

import string
import os


A = "k_trap_cur"
B = open(A, 'r+')
lines = B.readline()

for lines in B:
    if lines.startswith("E PRAM"):
        if "OOPS: 1" in lines:
            while lines.next().startswith("E PARAM") == False: // HERE I want to access next line
                print " YES"

【问题讨论】:

read()读取文件并用“E PARAM”分割 我的文件是一个有很多行的大文件。在 while 循环中,我想检查下一行是否以 ("E PARAM") 开头。我不必拆分它 在循环中使用 next(B)B.readline() 查看下一行 【参考方案1】:

如果我没听错的话:

b = open(a, 'r+')
for line in b:
    if line.startswith("E PRAM") and "OOPS: 1" in line:
        next_line = next(b)
        # do whatever you need

文件提供了所谓的“迭代器协议”,这就是它们在for-loops 中工作的原因。如果需要,您也可以手动调用next 函数。详情请查看PEP-234。

【讨论】:

@kirelagin .. 非常感谢您的链接。我试着按照你说的做,但它给了我一个错误。代码:对于 B 中的行:如果行中的 lines.startswith("EchoStar PRAM") 和 "OOPS: 1":next_line = next(B) print next_line Error: next_line = next(B) NameError: name 'next' is not定义 :- 错误:next_line = next(B) NameError: name 'next' is not defined @Nick next 是在 Python 2.6 中添加的,可能您的版本较旧。那么next_line = next(b) 应该可以工作了。

以上是关于如何在 Python 中访问文件(.txt)中的下一行的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 3 中写入 .txt 文件

如何在 Python 3 中查看文件中的下一个字符?

在 Python 中的相对位置打开文件

如何根据 .txt 文件中的关键字在 Python 中创建列表?

Python 3:检查迭代器的下一个值而不进行迭代

在 Python 中查找扩展名为 .txt 的目录中的所有文件