我在日志文件中有测试结果,其格式如下:
无用的信息
无用的信息
=======================
有用的信息
有用的信息
=======================
测试成功
每个部分中的行数可能会有所不同,因此我想检查双等号字符“==”的第一次出现,并将该行读取到文件末尾为止。目前我正在使用以下代码将整个文件读入字符串。
with open ("Report.txt", "r") as myfile:
data = myfile.read()
谢谢您的帮助!
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
所有的过滤和吹毛求疵都在生成器函数中完成,您可以将“过滤输入”的逻辑与“处理输入”的逻辑分开。
您可以逐行阅读,默认情况下不存储这些行。当您获得以 开头的行时'==',您读取的所有行,直到您读取'=='存储在字符串或列表中的第二行。
myfile = open("Report.txt", "r")
while myfile.readline()[:2] != '==':
pass
for line in myfile:
data = line
如果您已将整个文件保存在内存中,则可以像这样获得“除第一部分之外的所有内容”:
useful = data.split('======================\n',1)[1]
这会在第一次出现分隔符时拆分数据,返回分隔符之后的所有内容。