【发布时间】:2017-08-08 14:01:01
【问题描述】:
当我在该文件中找到特定字符串时,我想停止阅读。我该怎么做。
os.chdir('/root/.jenkins/jobs/pip2/builds/47')
fo = open('log','w+')
【问题讨论】:
-
日志文件是否在您阅读时被写入?
-
是的,它是@Scovetta
当我在该文件中找到特定字符串时,我想停止阅读。我该怎么做。
os.chdir('/root/.jenkins/jobs/pip2/builds/47')
fo = open('log','w+')
【问题讨论】:
您可以打开文件并使用for循环逐行读取:
with open('file') as f:
for line in f:
#read this line
if 'special string' in line:
break
上面的代码一次只读取一行。当读取下一行时,上一行将被垃圾回收。
【讨论】:
您可以使用 Python 的 takewhile() 函数读取所有行,直到它与您的特定字符串匹配,如下所示:
import itertools
specific_string = 'line 5'
with open('input.txt') as f_input:
for line in itertools.takewhile(lambda x: x.strip() != specific_string, f_input):
print line,
所以如果input.txt 包含:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
你会得到以下输出:
line 1
line 2
line 3
line 4
或者为了获得相反的效果,要查看特定字符串之后的所有行,您可以使用dropwhile(),如下所示:
import itertools
specific_string = 'line 5'
with open('input.txt') as f_input:
for line in itertools.dropwhile(lambda x: x.strip() != specific_string, f_input):
print line,
给你:
line 5
line 6
line 7
【讨论】: