2013-03-12 3 views
0

Я хотел бы показать ход обработки файла csv. Я обыскал и нашел это: Tracking file load progress in Python Но это сделает мою жизнь немного сложнее, потому что мне нужно обработать прочитанные байты. Другим подходом является подсчет строк, но я не хотел бы читать количество строк до начала обработки.Отслеживание загрузки csv в python

Моя идея - получить размер файла (ОС), и когда я обрабатываю файл, я получаю обработанные байты (должен быть самым быстрым подходом).

Любое другое решение, чтобы показать прогресс?

ответ

0

file.tell() я нашел, но я не использовал его. Он должен указать позицию в файле.

+0

Это должно сработать! Я этого не видел. –

0

Вы можете заправить его парком, верно? Csv - это всего лишь текстовый файл, и вы можете захватить размер файла с модуля os. Затем, с первой строки, которую вы читаете, вы можете рассчитать размер каждой строки и оценить общие строки в файле.


Щелчок по вашей ссылке, хотя, кажется, что это именно то же самое предложение :)

+0

Хорошо, это моя идея. Но как я могу получить количество байтов, читаемых на каждой итерации? У FileObjects нет атрибута, такого как 'bytesRead'. И я хочу перебирать строки, а не читать в байтах. –

+0

вы используете оператор ** len ** на данных, которые вы получаете. – joojaa

+0

Ahh ok, я вижу. Затем я бы подсчитал количество символов в одной строке, что дает вам количество байтов. Это дает вам представление о байтах на строку, общий размер файла в байтах, деленный на это число, дает общее количество строк в файле. Вы также можете сохранить скользящее среднее (например, обновлять байты/строку каждый раз, когда вы читаете строку), чтобы ваша оценка стала более точной, когда вы читали больше данных. – BenDundee

Смежные вопросы