我正在嘗試創建WiFi日誌掃描程序。目前我們使用CTRL + F和關鍵字手動檢查日誌。我只是想讓這個過程自動化。即轟擊.txt文件並接收輸出。Python 2.7.3:搜索/計數字符串txt文件,返回該字符串的最終出現的完整行
我已經得到了代碼的骨骼,可以使它稍後工作,但我遇到了一個小問題。我希望掃描器搜索文件(完成),計算該字符串的實例(完成)並輸出出現次數(完成),然後輸出該字符串最後出現的完整行,包括行號(行號不是必需的,只是讓事情變得更容易,如果存在多個問題,則更容易做出更新的問題)。
目前我得到每一行的輸出與字符串。我知道爲什麼會發生這種情況,我只是想不出一種方法來指定輸出最後一行。
這裏是我的代碼:
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename
def file_len(filename):
#Count Number of Lines in File and Output Result
with open(filename) as f:
for i, l in enumerate(f):
pass
print('There are ' + str(i+1) + ' lines in ' + os.path.basename(filename))
def file_scan(filename):
#All Issues to Scan will go here
print ("DHCP was found " + str(filename.count('No lease, failing')) + " time(s).")
for line in filename:
if 'No lease, failing' in line:
print line.strip()
DNS= (filename.count('Host name lookup failure:res_nquery failed') + filename.count('HTTP query failed'))/2
print ("DNS Failure was found " + str(DNS) + " time(s).")
for line in filename:
if 'Host name lookup failure:res_nquery failed' or 'HTTP query failed' in line:
print line.strip()
print ("PSK= was found " + str(testr.count('psk=')) + " time(s).")
for line in ln:
if 'psk=' in line:
print 'The length(s) of the PSK used is ' + str(line.count('*'))
Tk().withdraw()
filename=askopenfilename()
abspath = os.path.abspath(filename) #So that doesn't matter if File in Python Dir
dname = os.path.dirname(abspath) #So that doesn't matter if File in Python Dir
os.chdir(dname) #So that doesn't matter if File in Python Dir
print ('Report for ' + os.path.basename(filename))
file_len(filename)
file_scan(filename)
那是,相當多,將是我工作的代碼(只需要添加一些問題,搜索),我有搜索的字符串,而不是一個版本文本文件here。它輸出以下內容:
Total Number of Lines: 38
DHCP was found 2 time(s).
dhcp
dhcp
PSK= was found 2 time(s).
The length(s) of the PSK used is 14
The length(s) of the PSK used is 8
我只能有一般的東西,修改它是一個字符串,而不是txt文件,但我掃描從字符串將是什麼的txt文件。
不要太擔心PSK,我想要列出的所有例子,我會看看如果我能在晚些時候把它們整理成一行。
作爲一個便箋,很多這一切都是從以前的搜索混雜在一起,所以我有一個好主意,有可能更乾淨的方式做到這一點。這不是我目前關心的問題,但是如果您確實有這方面的建議,請提供解釋/鏈接以解釋爲什麼您的方式更好。我對python相當陌生,所以我主要處理我目前理解的東西。 :)
在此先感謝您的幫助,如果您需要更多信息,請告訴我。
喬
感謝解決,整個last_line =線位幫助! :)另外,認爲我有我的印刷聲明(後如果)縮進遠。 想到我的一個主要問題是我正在用一個字符串進行測試,但是我的主代碼使用了一個文本文檔,愚蠢的錯誤,但是您幫助我擺脫了困擾我的思維模式。 至於file_scan,yup,一定會讓那個更容易,最後整理起來,儘管開始時會保持每一個點分開,只是爲了讓我更容易區分它們。 再次感謝! – Ultrin