Разбор новых данных в постоянно обновляемом текстовом файле

Я хочу проанализировать временный файл (он имеет расширение .txt) в режиме реального времени. Временный файл имеет формат:

6000 -64.367700E+0 19.035500E-3
8000 -64.367700E+0 18.989700E-3

Однако после импорта и печати это не матрица, как я надеялся, а формат:

'6000\t-64.367700E+0\t19.035500E-3\n8000\t-64.367700E+0\t18.989700E-3'

Я пытался импортировать построчно, но, поскольку он в строковом формате, я не мог заставить работать xreadlines() или readlines(). Я могу разделить строку, а затем разделить данные в соответствующий список для анализа, но есть ли какие-либо предложения по работе только с новыми данными. По мере того, как файл становится больше, код замедляется, чтобы регулярно перерабатывать все данные, и я не могу понять, как воспроизвести цикл xreadlines().

Спасибо за любую помощь


person mattjd    schedule 23.08.2017    source источник


Ответы (1)


Вы пытались использовать это?

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

Вы можете указать разделитель \t.

person belka    schedule 23.08.2017
comment
Спасибо. Я немного почитал, но кадры данных из Panda кажутся подходящим вариантом. Теперь нужно только извлекать новые данные по мере их добавления в исходный временный текстовый файл. - person mattjd; 24.08.2017
comment
Попробуйте прочитать это: docs.python.org/2/library/logging.html Насколько я знаю, было бы сложно читать текстовый файл и писать в него из-за проблем параллелизма. Вы должны попробовать это: stackoverflow.com/questions/32594137/ Я бы обрабатывал пакеты файлов, выполняя анализ части данных, а не непосредственно анализируя входящие фрагменты. Или попробуйте изучить потоковые системы, такие как spark-streaming и Kafka. Не забудьте проголосовать, если это вас устроило - person belka; 24.08.2017
comment
Я проголосовал, но, поскольку я полный нуб, моя репутация слишком мала для регистрации. Извините и спасибо. Я беру временный файл, читаю его, сохраняю в памяти последние 100 показаний (на непрерывной основе), обрабатываю данные на основе предыдущих 100 показаний, а затем добавляю исходные и обработанные данные в файл csv. Также проверяю массивы NumPy, поскольку они дают мне больше возможностей для обработки данных. - person mattjd; 24.08.2017
comment
Да, что это хорошая идея. + пока пытаетесь прочитать 100 последних показаний, не забудьте поставить блокировку на свой файл. Другим решением было бы иметь систему баланса, например. читать из A и писать в B, затем, следуя заданному правилу (например, через 10 минут) переключаться - person belka; 24.08.2017