Как подсчитать общее количество строк в текстовом файле с помощью Python
Здесь есть четыре строки, и теперь я хочу получить результат как четыре. Как я могу это сделать?
10 ответов
Вы можете использовать sum() с выражением генератора:
Обратите внимание, что вы не можете использовать len(f) , так как f является iterator. _ — это специальное имя переменной для переменных throwaway, см. Какова цель единственного подчеркивания «_» переменная в Python?.
Вы можете использовать len(f.readlines()) , но это создаст дополнительный список в памяти, который даже не будет работать с огромными файлами, которые не вписываются в память.
Эта ссылка (Как получить дешевый график в Python?) имеет множество потенциальных решений, но все они игнорируют один из способов сделать этот запуск значительно быстрее, а именно используя небуферизованный (необработанный) интерфейс, используя bytearrays и делая свою собственную буферизацию.
Используя модифицированную версию инструмента синхронизации, я считаю, что следующий код быстрее (и чуть более pythonic), чем любое из предлагаемых решений:
Вот мои тайминги:
Я бы разместил его там, но я являюсь относительно новым пользователем для обмена пакетами и не имею требуемой манны.
Это можно сделать полностью с выражениями генераторов in-line, использующими itertools, но это выглядит довольно странно:
Вы можете использовать sum() с выражением генератора. Выражение генератора будет [1, 1, . ] до длины файла. Затем мы вызываем sum() , чтобы добавить их все вместе, чтобы получить общее количество.
Кажется, что вы пытались, чтобы вы не хотели включать пустые строки. Затем вы можете:
Я не новичок в stackoverflow, просто не имел учетной записи и обычно приходил сюда для ответов. Я еще не могу прокомментировать или проголосовать за ответ. НО хотел сказать, что код от Майкла Бэкона выше работает очень хорошо. Я новичок в Python, но не для программирования. Я читал Python Crash Course, и есть несколько вещей, которые я хотел сделать, чтобы разбить крышку для чтения, чтобы охватить подход. Одной утилитой, использующей с точки зрения ETL или даже качества данных, было бы захват количества строк файла независимо от любого ETL. Файл имеет X количество строк, вы импортируете в SQL или Hadoop, и вы получаете X количество строк. Вы можете проверить на самом низком уровне количество строк файла необработанных данных.
Я играл с его кодом и делал некоторые тесты, и этот код очень эффективен до сих пор. Я создал несколько различных CSV файлов, различных размеров и строк. Вы можете увидеть мой код ниже, и мои комментарии содержат время и подробности. В приведенном выше коде Майкл Бэкон работает примерно в 6 раз быстрее, чем обычный метод Python для простого цикла линий.
Как сосчитать строчки в txt документе в Python 3?
Нужен код для Python 3 чтобы сосчитать строчки в txt документе.
Вариант без загрузки файла в память целиком:
![]()
Хорошим решением будет посчитать количество переводов строк ( ‘\n’ ) и прибавить единицу.
Пример:
UPD:
Код можно оптимизировать.
Вот версия, которая в большинстве случаев будет использовать меньше памяти:
На каждой итерации в памяти хранится только одна строка (прошлые с аппетитом съедает сборщик мусора)
Но тут следует понимать, что может попасться файл с небольшим количеством строк (или вовсе с одной). В таком случае наша оптимизация не даст никаких результатов.
Тогда оптимальным вариантом будет чтение файла по некоторому количеству данных:
Этот способ потенциально экономит очень много памяти. При желании, можно считывать хоть по символу. Но тогда мы незначительно, но проигрываем по скорости.
Русские Блоги
Самый простой способ — прочитать файл в большом списке, а затем подсчитать длину списка. Если путь к файлу передается в качестве параметра filepath, то только одна строка кода может удовлетворить наши потребности:
Если это очень большой файл, описанный выше метод может быть медленным или даже недействительным. В настоящее время вы можете использовать цикл для обработки:
Другой способ ускорить обработку больших файлов — подсчитать количество символов новой строки в файле ‘\ n’ (или строке, содержащей ‘\ n’, например, в системе Windows):
Параметр «rb» необходим, иначе приведенный выше код будет очень медленным в системе Windows.
linecache — это библиотека функций, которая специально поддерживает чтение больших файлов и поддерживает чтение строк. linecache заранее считывает файл в кеш, а затем больше не читает его с жесткого диска, если вы обращаетесь к файлу позже.
2. Прочитать содержимое определенной строки файла (проверены файлы 1G, работоспособность неплохая)
3. Используйте linecache для чтения содержимого файла (проверены файлы размером 1G, эффективность неплохая)
Python: многострочные строки. Как узнать количество строк? Как перебрать строки?
Есть многострочная строка. Нужно узнать количество строк в ней. Так же нужно уметь перебирать строки. Вопрос: как это делать?
Я пока не придумал ничего лучшего, чем преобразовывать многострочную строку в список через метод splitlines(), и с ним уже работать:
Но это как-то неправильно — примерно в два раза расходуется память. Это нехорошо особенно если многострочная строка получена от какого-нибудь лога выполнения процесса на десяток миллионов строк.
Как узнать количество строк и перебрать строки в многострочной строке более правильно?