2015-10-07 52 views
-2

我正在尋找寫兩個python腳本;一個用於ping IP,並將ping結果存儲到文件中,另一個用於從創建的.txt文件中提取並平均ping時間。 (請注意,我真正需要登錄的是ping時間)(我的平臺是Pi,如果有幫助)Python:如何從文件平均Ping時間

下面是我打算用來將ping結果存儲在文本文件中的代碼行很顯然,在我的節目,我已經把這個在無限循環使用的延遲,因此不會ping通過於頻繁)

命令=使用os.system(「平127.0.0.1 >> pingresults.txt」)

我被困在如何訪問這個文件,然後把這個文件解析成有用的數據? (請記住,我是一個嚴重的業餘)

我想知道如果我最初將數據記錄到文件,如果我可以過濾只是平時。這將使他們後來的平均更容易。

如果您對感興趣的命令,技巧或實現有任何建議,那將非常棒!

+0

參見[這個答案](http://stackoverflow.com/a/316974/1084416)到[在Python中Ping一個站點?](http://stackoverflow.com/questions/316866/ping-a-site-in-python)。 –

+0

參見'open'函數以及'str'方法和're'模塊。 – MisterMiyagi

+0

你可以在bash單線程中做到這一點 - [看到這個問題。](http://stackoverflow.com/questions/9634915/extract-average-time-from-ping-c) – Monkpit

回答

0

我會在Python藉此在基本步驟,完全無視Python的 「招數」:

打開文件:

f = open("pingresults.txt", "r") 
time_list = [] 
for line in f: 
    # Ping time is in the penultimate field, 5 chars in. 
    field_list = line.split(' ') 
    ping_time = field_list[-2][5:] 
    time_list.append(field_list[-1]) # add last field to end of time_list 

print sum(time_list)/float(len(time_list)) 
+0

謝謝梅子! – user5410008

+0

還要注意,你可以用一個簡單的命令(awk?)輕鬆地進行字段提取,以獲取第7個字段,去掉前導「time =」,並累計計數和運行總和。最後劃分。正如@monkey所說,這是一個單線程。 – Prune

+0

我想重新發布你剛纔給出的代碼,以及我如何理解它的功能的註釋,並注意我不明白的代碼行。如果您能確認我的理解並提供我不確定的線路的簡要說明,我將非常感激。 – user5410008