2013-07-26 105 views
0

特定行我在日誌文件中15條線,我想通過蟒蛇閱讀例如第4和第10線和輸出話說這個字符串顯示他們發現:匹配和dispalying通過蟒蛇

abc 
def 
aaa 
aaa 
aasd 
dsfsfs 
dssfsd 
sdfsds 
sfdsf 
ssddfs 
sdsf 
f 
dsf 
s 
d 

請通過代碼建議如何在Python中實現這一點。

只是爲了詳細闡述這個例子第一個(字符串或行是唯一的)並且可以在日誌文件中很容易地找到下一個字符串B在第一個字符的40行之內,但是這個發生在日誌中的很多地方文件,所以我需要在讀取字符串A之後讀取第一個40行的字符串,並打印出與查找這些字符串相同的字符串。

另外,我不能使用python的with命令,因爲這會給我帶來像'with'一樣的錯誤將成爲Python 2.6中的保留關鍵字。 我使用Python 2.5

+0

你想要什麼字符串中發現? –

+0

嗨Eiyrioü馮Kauyf,第一個(字符串或線是唯一的),可以很容易地找到下一個字符串B來到第一個40行後,但這一個發生在日誌文件中的很多地方,所以我需要閱讀這個字符串與前40行字符串A和打印相同,發現這些字符串 – user2615729

回答

0

您可以使用此:

fp = open("file") 
for i, line in enumerate(fp): 
    if i == 3: 
     print line 
    elif i == 9: 
     print line 
     break 
fp.close() 
+0

嗨,需要更多的幫助,我必須在日誌文件中搜索字符串哪裏行這個字符串將出現不能像第一個字符串可以決定在行號4120和第二個字符串在行4154第二個字符串像40行的第一個字符串,我需要閱讀這些字符串,並顯示它們。此外,我不能使用python的命令給我錯誤,如'與'會在Python 2.6中成爲一個保留的關鍵字 – user2615729

0
#list of random characters 
from random import randint 
a = list(chr(randint(0,100)) for x in xrange(100)) 
#look for this 
lookfor = 'b' 
for element in xrange(100): 
    if lookfor==a[element]: 
     print a[element],'on',element 
#b on 33 
#b on 34 

是一個易於閱讀和簡單的方法來做到這一點。你可以給你的日誌文件的一部分作爲例子嗎?還有其他的方法可以更好地工作:)。


由作者修改後:

,你可以做那麼最簡單的事情是:

looking_for = 'findthis' i = 1 for line in open('filename.txt','r'): 
    if looking_for == line: 
     print i, line 
    i+=1 

它的高效和易於:)

+0

嗨,我可以做一些像讀取一個文件行,比匹配x行是唯一的,並使用for循環40次搜索第二個字符串 – user2615729

+0

你是什麼意思'匹配x行'你能詳細說明嗎? –

0
def bar(start,end,search_term): 
    with open("foo.txt") as fil: 
     if search_term in fil.readlines()[start,end]: 
      print search_term + " has found" 


>>>bar(4, 10, "dsfsfs") 
"dsfsfs has found"