#python #pandas #dataframe #logging
Вопрос:
EDIT2: журнал выглядит как csv-файл с пробелами в качестве разделителя. Я попытался напрямую читать с помощью программы чтения csv-файлов. Но дело в том, что все эти файлы имеют 3-4 строки описания, которые мне нужно сначала удалить. Попробовал вручную удалить эти строки, это сработало. теперь вопрос в том, есть ли способ пропустить чтение этих строк(попробовал пропустить строки, но это приводит к некоторой ошибке символов, как и должно быть). я могу попробовать удалить эти строки с помощью open, но это кажется большой работой-написать 120 файлов. Есть ли обходной путь?
EDIT1: Похоже, что в данных могут отсутствовать значения некоторых индексов. Остается вопрос, как считывать большие файлы журналов в фрейм данных
Итак, у меня есть блоги за 3 месяца, каждый файл-это блог за 1 день. Каждый файл содержит около 70000 нечетных записей/строк. Как прочитать их в одном кадре данных?
Вот что я пробовал до сих пор:
log_data=open(path,'r')
result={}
j=0
for line in log_data:
if j>3: #First three lines are comments and description
columns = line.split(' ')
result[j-4] = {cats_list[i]: columns[i] for i in range(15)}
# break
j =1
js=json.dumps(result)
df=pd.read_json(js, orient='index')
Но я получаю list index out of range
, когда j достигает 9998. Это ограничение памяти или что-то в этом роде?
Вот основные столбцы:
cats_list = ['date', 'time', 's-sitename', 's-ip', 'cs-method', 'cs-uri-stem', 'cs-uri-query', 's-port', 'cs-username', 'c-ip', 'cs(User-Agent)', 'cs(Referer)', 'sc-status', 'sc-substatus', 'sc-win32-status']
Комментарии:
1. Похоже, проблема не столько в памяти, сколько в том, что у вас есть ложное предположение о том, что содержит файл. Память может быть проблемой с тем, что вы пытаетесь сделать, но это не проявится подобным образом.
2. @JohnColeman Да, я думаю, что в данных отсутствуют некоторые значения по определенным индексам
3. Либо это файл csv (возможно, с другим разделителем, чем запятая), либо это не так. Если это csv-файл-используйте средство чтения csv-файлов. Если это не так-что вообще значит загружать его в фрейм данных? Возможно, вам потребуется написать пользовательский синтаксический анализатор, который может решить, какие значения где отсутствуют. Ваш вопрос, похоже, заключается в том, как считывать большой файл журнала во фрейм данных, когда файл журнала не разбивается на столбцы надежным способом. Если это ваш вопрос, вам необходимо предоставить более подробную информацию.
4. @JohnColeman это csv-файл с пробелами в качестве разделителя. Я попытался напрямую читать с помощью программы чтения csv-файлов. Но дело в том, что все эти файлы имеют 3-4 строки описания, которые мне нужно сначала удалить. Попробовал вручную удалить эти строки, это сработало. теперь вопрос в том, есть ли способ пропустить чтение этих строк(попробовал пропустить строки, но это приводит к некоторой ошибке символов, как и должно быть). я могу попробовать удалить эти строки с помощью
open
, но это кажется большой работой, написать 120 файлов. Есть ли обходной путь?