Python: Сколько строк в файле?
Определение количества строк в файле с использованием Python является простой и полезной задачей. В этой статье мы рассмотрим два основных способа подсчета строк в файле с помощью Python.
Способ 1: Использование метода readlines()
Этот способ подразумевает использование метода readlines() , который возвращает список всех строк файла. Для подсчета строк достаточно определить длину этого списка с помощью функции len() .
Способ 2: Использование цикла for
Второй способ подразумевает использование цикла for для итерации по строкам файла и подсчета их количества.
Заключение
Мы рассмотрели два основных способа подсчета строк в файле с помощью Python. Выбор между ними зависит от ваших предпочтений и конкретных условий использования. Оба способа работают корректно и предоставляют точный результат.
Вывести количество строк в файле
Подскажите, пожалуйста, как вывести количество строк, загруженных из файла? Я написал следующий код, но он выводит именно содержимое строк. А мне нужно количество:
![]()
Чтобы вывести количество строк в файле, не обязательно сами строки сохранять, достаточно просто посчитать сколько раз символ новой строки встречается в тексте:
Файл открывается в текстовом режиме (перевод строки преобразуется в ‘\n’ на всех системах), читается блоками по 8K символов в каждом до конца файла и количество ‘\n’ в каждом блоке суммируется, чтобы найти общее число строк.
Код предполагает, что все строки, включая последнюю, заканчиваются символом новой строки также как wc -l утилита (принято на POSIX, иначе например, подумайте что будет, если вызвать cat *.txt ). Если последний символ не новая строка, последняя строка не считается (руками единицу добавить можно в этом случае).
Имея count_lines() функцию, легко получить желаемый вывод:
Если проникнуться дзеном пайтона:
На мой взгляд это то, что вам нужно, в легко понятном виде.
![]()
![]()
Вывести количество строк с помощью регулярного выражения. Особенность. Если последняя строка не пустая, то выведет количество на 1 элемент меньше.
На больших файлах ко всему файлу сразу применять не желательно, возможно проверить на пустые строки построчно или прочитав часть файла, потом сложив длину.
пример текстового файла
Как это работает. В данном случае жадность регулярного выражения отключена.
Жадность включена, из-за жадности регулярных выражений \n\n будут вместе там где ничего нет кроме переноса
Если посчитаем стандартно, то получим включая пустые строки, что пустая строка тоже строка. Этот метод считает всегда количество строк как мы это понимаем.
Причина по которой отличается количество
видна здесь, в конце нет переноса строки который считаем.
Вариант исправления количества строк для регулярных выражений, файл придется читать второй раз с конца.
Если символа переноса в последней строке нет, то прибавить плюс 1, в данном случае просто вывод на экран.
Алтернативное решение этой же проблемы чтение файла с начала построчно, далее взять последнюю строку и проверить в ней символ
Python Count Number of Lines in a File
If the file is significantly large (in GB), and you don’t want to read the whole file to get the line count, This article lets you know how to get the count of lines present in a file in Python.
Table of contents
Steps to Get Line Count in a File
Count Number of Lines in a text File in Python
-
Open file in Read Mode
To open a file pass file path and access mode r to the open() function.
For example, fp= open(r’File_Path’, ‘r’) to read a file.
The enumerate() function adds a counter to an iterable and returns it in enumerate object. Pass the file pointer returned by the open() function to the enumerate() . The enumerate() function adds a counter to each line.
We can use this enumerate object with a loop to access the line number. Return counter when the line ends.
We need to make sure that the file will be closed properly after completing the file operation. Use fp.close() to close a file.
Example
Consider a file “read_demo.txt.” See an image to view the file’s content for reference.

text file
Output:
- The enumerate() function adds a counter to each line.
- Using enumerate, we are not using unnecessary memory. It is helpful if the file size is large.
- Note: enumerate(file_pointer) doesn’t load the entire file in memory, so this is an efficient fasted way to count lines in a file.
Generator and Raw Interface to get Line Count
A fast and compact solution to getting line count could be a generator expression. If the file contains a vast number of lines (like file size in GB), you should use the generator for speed.
This solution accepts file pointer and line count. To get a faster solution, use the unbuffered (raw) interface, using byte arrays, and making your own buffering.
Output:
Use readlines() to get Line Count
If your file size is small and you are not concerned with performance, then the readlines() method is best suited.
This is the most straightforward way to count the number of lines in a text file in Python.
- The readlines() method reads all lines from a file and stores it in a list.
- Next, use the len() function to find the length of the list which is nothing but total lines present in a file.
Open a file and use the readlines() method on file pointer to read all lines.
Example:
Note: This isn’t memory-efficient because it loads the entire file in memory. It is the most significant disadvantage if you are working with large files whose size is in GB.
Use Loop and Sum Function to Count Lines
You can use the for loop to read each line and pass for loop to sum function to get the total iteration count which is nothing but a line count.
If you want to exclude the empty lines count use the below example.
The in Operator and Loop to get Line Count
Using in operator and loop, we can get a line count of nonempty lines in the file.
- Set counter to zero
- Use a for-loop to read each line of a file, and if the line is nonempty, increase line count by 1
Example:
Count number of lines in a file Excluding Blank Lines
For example, below is the text file which uses the blank lines used to separate blocks.
When we use all the above approaches, they also count the blank lines. In this example, we will see how to count the number of lines in a file, excluding blank lines
Example:
Output:
Conclusion
- Use readlines() or A loop solution if the file size is small.
- Use Generator and Raw interface to get line count if you are working with large files.
- Use a loop and enumerate() for large files because we don’t need to load the entire file in memory.
Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.
About Vishal
I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter
Related Tutorial Topics:
Python Exercises and Quizzes
Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.
Подсчет строк, слов и символов в файле
Цикл for языка Python извлекает из файлового объекта данные построчно (одну строку на каждой итерации цикла). Таким образом, количество итераций цикла определит количество строк в файле.
Встроенная функция len() языка Python считает количество элементов в передаваемой в нее объекте. С ее помощью находится количество символов в каждой строке.
Строковый метод split() разбивает строку на части. По-умолчанию разделение происходит по местам расположения пробелов в строке. Таким образом, мы можем определить количество слов в каждой строке, посчитав с помощью len() слова в получившемся после применения split() списке.
На каждой итерации цикла мы должны добавлять полученные значения к переменным, хранящим общие количества строк, слов и символов.
Пусть содержимое файла text.txt будет таким:
Тогда программа даст следующий результат:
Cимволами считаются не только буквы, также пробелы и переходы на новую строку (символ ‘\n’ ). Если требуется не учитывать переход на новую строку как символ, его можно «отрезать» с помощью строкового метода strip() . Делается это перед тем, как строка передается в функцию len() : symbols += len(line.strip(‘\n’)) .
Если данную задачу надо решить без использования продвинутых возможностей (встроенных функций и методов) языка программирования Python, а в рамках изучения алгоритмов или на более «низком» уровне, то программа может выглядеть так:
Здесь на каждой итерации цикла мы имеем дело не с целой строкой, а с очередным символом. При этом увеличиваем на единицу переменную, хранящую количество символов, и, если текущий символ — это переход на новую строку, переменную для подсчета количества строк.
Для подсчета слов требуется определить в программе еще одну переменную, в которой будет храниться «сигнал», находимся ли мы внутри слова. Если это так, то очередной непробельный символ не следует считать началом нового слова и не надо увеличивать счетчик слов.
Алгоритм подсчета слов в программе выше следующий. Если текущий символ не пробел И не переход на новую строку, И ранее мы находились вне слова ( in_word == False ), то есть соблюдены все три условия сразу, значит началось новое слово. Поэтому увеличиваем счетчик слов и устанавливаем in_word в значение True . Последнее действие позволит на следующей итерации цикла, при условии обработки второй и послеющих букв слова, не соблюдаться условию in_word == False и не увеличивать счетчик слов.
Мы «сбрасываем» in_word в False , только когда встречаем пробельный символ ИЛИ переход на новую строку (любое одно из двух условий).
Программа выше, также как в первом варианте, считает переход на новую строку за символ. Если требуется его исключить, можно поместить увеличение значения счетчика символов в ветку else :
Если очередной символ — это переход на новую строку, увеличивается счетчик строк. В остальных случаях, — счетчик символов.
Если файл большой, то считывать сразу все его содержимое в строковую переменную ( text = file.read() ) неблагоразумно. Если читать файл посимвольно ( file.read(1) ), то условием завершения работы цикла будет момент возрата методом read() пустой строки, что означает конец файла (в других языках может быть специальный символ конца файла, доступный через идентификатор EOF — end of file).
В этом примере для открытия файла используется оператор with , который рекомендован для работы с файлами. Выражения char not in (‘ ‘, ‘\n’) and not in_word и char in (‘ ‘, ‘\n’) по смыслу аналогичны соответствующим логическим выражениям из предыдущих вариантов программы.