2014-09-26 94 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) 
相關問題