3

我在日志文件中有测试结果,其格式如下:

无用的信息

无用的信息

=======================

有用的信息

有用的信息

=======================

测试成功

每个部分中的行数可能会有所不同,因此我想检查双等号字符“==”的第一次出现,并将该行读取到文件末尾为止。目前我正在使用以下代码将整个文件读入字符串。

with open ("Report.txt", "r") as myfile:
    data = myfile.read()

谢谢您的帮助!

4

4 回答 4

6
useful = []
with open ("Report.txt", "r") as myfile:
    for line in myfile:
        if "===" in line:
            break
    for line in myfile:
        useful.append(line)
a_string = "".join(useful)

但是,我更愿意将其隐藏在生成器中,如下所示:

def report_iterator():
    with open ("Report.txt", "r") as myfile:
        for line in myfile:
            if "===" in line:
                break
        for line in myfile:
            yield line

for line in report_iterator():
    # do stuff with line

所有的过滤和吹毛求疵都在生成器函数中完成,您可以将“过滤输入”的逻辑与“处理输入”的逻辑分开。

于 2012-04-19T14:38:46.117 回答
2

您可以逐行阅读,默认情况下不存储这些行。当您获得以 开头的行时'==',您读取的所有行,直到您读取'=='存储在字符串或列表中的第二行。

于 2012-04-19T14:37:28.743 回答
0
myfile = open("Report.txt", "r")
while myfile.readline()[:2] != '==':
    pass
for line in myfile:
    data = line
于 2012-04-19T14:38:12.560 回答
0

如果您已将整个文件保存在内存中,则可以像这样获得“除第一部分之外的所有内容”:

useful = data.split('======================\n',1)[1]

这会在第一次出现分隔符时拆分数据,返回分隔符之后的所有内容。

于 2012-04-19T14:37:14.260 回答