2014-09-26 96 views
0

我需要搜索特定字符串或错误的调试文件,然后,一旦找到它,查找6行文件,然后打印上面列出的行6在里面。Python - 文件 - 根据搜索结果更改行号

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 任何时候我点击字符串“(Err:No Output)”,我需要找到它的关联ID,这是6行以上的数字错误。因此,“没有输出我需要搜索的内容

::编辑::

+0

正如本文介绍的缩进正确和代码运行检查你的源文件:你可能有空格和制表符混合或一些这样微妙的格式问题,但代码生成没有输出,因为行'num + 6'在'file.txt'中为空白我怀疑你可能想要'num + 5'行。 – John1024 2014-09-26 04:36:37

回答

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) 
相关问题