Python - 文件 - 根据搜索结果更改行号

时间:2014-09-26 00:28:53

标签: python file search line-numbers

我需要在调试文件中搜索特定的字符串或错误,然后,一旦找到它,查找文件6行,然后打印上面第6行所包含的内容。

import linecache

file = "/file.txt"
fh = open("/file.txt", "r")
lookup = 'No Output'

with fh as myFile:
    for num, line in enumerate(myFile, 1):
        if lookup in line:
            numUp = num + 6
            new = linecache.getline(file, numUp)        
            print new

我尝试添加" num + = 6"每当我找到"我需要搜索的词语"但我的输出是空白或我收到此错误:

File "testRead.py", line 12
    print new
    ^
IndentationError: unexpected indent

如果还有另一种做法"搜索,那么扫描n行,然后打印/返回"以一种逐行的方式,我也很高兴知道,因为我正在处理的文件大小差异很大。

我提升了我通常看到的一些事情的示例文件:http://pastebin.com/mzvCfZid 每当我点击字符串"(错误:无输出)"时,我需要找到它的相关ID,即错误上方的6行。所以"没有输出是我需要搜索的内容。

::编辑::

1 个答案:

答案 0 :(得分:0)

您需要deque的功能:

>>> from collections import deque
>>>
>>> lines = deque(maxlen = 7)
>>> for i in range(35):
...   lines.append(i)
...
>>> print lines
# Note your 6 lines earlier would be lines[0] here.
deque([28, 29, 30, 31, 32, 33, 34], maxlen=7)