Порог по длительности в лог-файле - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу проанализировать файл журнала с помощью сценария python, чтобы выделить строки со временем, превышающим определенную продолжительность, скажем, 50 мс.

Так что я уже использовал приведенный ниже код для преобразования его в csv , но этот способ требует некоторой очистки данных. Любые предложения для лучшего способа приветствуются.

with open(r"5.160.146.140.log", encoding="ISO-8859-1") as f, open('logfile.csv', 'w') as f2: 
    writer = csv.writer(f2)
    writer.writerow(['index', 'from', 'icmp_seq', 'ttl', 'time']) # column header

    i = 0
    for line in f:
        writer.writerow([i] + line.rstrip().split(' '))
        i += 1
        if i == 10000:
            break

enter image description here

1 Ответ

0 голосов
/ 28 апреля 2020

Почему бы вам не использовать pandas для этого?

import pandas as pd

df = pd.read_csv('logfile.csv', sep=' ', encoding='ISO-8859-1')
print(df.head())

Вы также можете отфильтровать нужные вам дела (это всего лишь идея, вам нужно адаптироваться к вашей реальности):

df['time'] = df['time'].str.replace(' ms', '')
df['time'] = pd.to_numeric(df['time'])
print(df[df['time'] > 50])

Обратите внимание, что вам сначала нужно будет относитесь к этому столбцу как к цифре c, так как во всех них есть "ms".

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

...