[英]Python: Print next x lines from text file when hitting string
情况如下:
我有一个.txt文件,其中包含几个nslookups的结果。
我想循环文件,并且每次遇到字符串“非权威性答案:”脚本必须从该位置打印以下8行。 如果它工作,我应该在我的屏幕上得到所有积极的结果:)。
首先,我有以下代码:
#!/bin/usr/python
file = open('/tmp/results_nslookup.txt', 'r')
f = file.readlines()
for positives in f:
if 'Authoritative answers can be found from:' in positives:
print positives
file.close()
但是那只印刷了“权威性答案可以从:”它在.txt中的时间。
我现在的代码:
#!/bin/usr/python
file = open('/tmp/results_nslookup.txt', 'r')
lines = file.readlines()
i = lines.index('Non-authoritative answer:\n')
for line in lines[i-0:i+9]:
print line,
file.close()
但是当我运行它时,它会很好地将第一个结果打印到我的屏幕上,但不打印其他正面结果。
ps我知道socket.gethostbyname(“foobar.baz”),但首先我要解决这个基本问题。
先感谢您!
您可以将该文件用作迭代器,然后在每次找到您的句子时打印接下来的8行:
with open('/tmp/results_nslookup.txt', 'r') as f:
for line in f:
if line == 'Non-authoritative answer:\n':
for i in range(8):
print(next(lines).strip())
每次在文件对象上使用next()
函数 (或在for
循环中循环它)时,它将返回该文件中的下一行,直到您读完最后一行。
而不是循环range(8)
,我实际上使用itertools.islice
:
from itertools import islice
with open('/tmp/results_nslookup.txt', 'r') as f:
for line in f:
if line == 'Non-authoritative answer:\n':
print(''.join(islice(f, 8)))
file = open('/tmp/results_nslookup.txt', 'r')
for line in file:
if line=='Non-authoritative answer:\n':
for _ in range(8):
print file.next()
顺便说一下:不要将名称file
用于变量,因为它是内置函数的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.