Подсчет строк: практическое руководство
Подсчет количества строк в Python: основные методы
Как эффективно подсчитать строки в большом файле, не загружая его целиком в память?
Самый производительный подход - использование генераторного выражения вместе с функцией sum(). Файл открывается в режиме чтения, и итерация происходит построчно, что требует минимального объема оперативной памяти.
with open('example.txt', 'r', encoding='utf-8') as file:
line_count = sum(1 for line in file)
print(f'Количество строк: {line_count}')
Python количество после запятой (количество знаков после запятой в python)
На каждой итерации генерируется единица, а sum() суммирует их. Этот метод подходит для файлов любого размера и учитывает пустые строки.
Как подсчитать строки в файле с помощью метода readlines()?
Метод readlines() считывает все строки в список, затем берется его длина.
with open('example.txt', 'r') as file:
lines = file.readlines()
line_count = len(lines)
print(line_count)
Python количество списков в списке (подсчет количества вложенных списков в python)
Проблема: При очень больших файлах список занимает много памяти, что может привести к ошибке MemoryError или замедлению работы программы. Решение - использовать итеративный метод (rbase).
Как подсчитать строки с помощью ручного счетчика в цикле for?
Классический способ - увеличивать счетчик на каждой итерации.
count = 0
with open('example.txt', 'r') as file:
for line in file:
count += 1
print(count)
Python количество повторений (подсчет количества повторений в python)
Типичная ошибка: Забыть инициализировать счетчик нулем перед циклом или сбросить его внутри цикла. Решение - поместить счетчик до открытия файла и четко разделить логику.
Как посчитать количество строк в текстовой переменной?
Для строки, содержащей несколько строк (разделенных символом \n), можно применить str.count() с учетом последней строки.
text = "Строка1\nСтрока2\nСтрока3"
line_count = text.count('\n') + 1
print(line_count) # Вывод: 3
количество символов python (подсчет количества символов в строке python)
Если текст может оканчиваться на \n (пустая последняя строка), результат будет завышен. Более надежный способ - использовать splitlines() и посчитать длину списка.
lines = text.splitlines()
print(len(lines))
Python количество строк (подсчет количества строк в python)
Проблема: Строки, содержащие \r\n или только \r (старые Mac OS), могут быть распознаны неправильно. splitlines() корректно обрабатывает все распространенные концы строк.
Как определить количество строк в DataFrame библиотеки pandas?
У DataFrame есть атрибут .shape, возвращающий кортеж (число строк, число столбцов).
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3]})
row_count = df.shape[0]
print(row_count) # Вывод: 3
количество цифр python (подсчет количества цифр в python)
Так же можно использовать len(df) - оба способа эквивалентны.
Ошибка: Применение .count() к DataFrame возвращает количество не-NaN значений по столбцам, а не число строк. Следует использовать .shape[0] или len().
Как подсчитать строки в файле с помощью утилиты wc (Linux/Unix)?
Можно вызвать системную команду через модуль subprocess. Однако решение не кроссплатформенное.
import subprocess
result = subprocess.check_output(['wc', '-l', 'example.txt'])
line_count = int(result.split()[0])
print(line_count)
Проблема: На Windows утилита wc отсутствует. Для кроссплатформенности рекомендуется использовать чистый Python.
Расширенные примеры подсчета строк
Пример 1. Сравнение производительности методов на большом файле (100 млн строк).
import time
# Создание тестового файла (занимает время)
with open('big_file.txt', 'w') as f:
for i in range(100_000_000):
f.write(f'строка {i}\n')
# Метод 1: readlines
start = time.time()
with open('big_file.txt', 'r') as f:
len(f.readlines())
print('readlines:', time.time() - start)
# Метод 2: sum(1 for line in file)
start = time.time()
with open('big_file.txt', 'r') as f:
sum(1 for line in f)
print('generator:', time.time() - start)
readlines: 12.34 сек (может упасть с MemoryError) generator: 2.15 сек
Генераторный подход работает быстрее и требует значительно меньше памяти.
Пример 2. Подсчет только непустых строк.
with open('example.txt', 'r') as file:
non_empty = sum(1 for line in file if line.strip())
print('Непустых строк:', non_empty)
Пример 3. Подсчет строк, содержащих определённую подстроку.
search = 'ошибка'
with open('log.txt', 'r') as file:
count = sum(1 for line in file if search in line)
print(f'Строки с "{search}": {count}')
Пример 4. Частотный анализ строк с помощью collections.Counter.
from collections import Counter
with open('words.txt', 'r') as file:
lines = [line.strip() for line in file if line.strip()]
counter = Counter(lines)
print(counter.most_common(3))
[('apple', 15), ('banana', 10), ('cherry', 8)]
Пример 5. Подсчет строк во всех файлах в директории (рекурсивно).
import glob
total = 0
for filepath in glob.glob('**/*.py', recursive=True):
with open(filepath, 'r', encoding='utf-8') as f:
total += sum(1 for line in f)
print('Всего строк кода:', total)
Пример 6. Подсчет строк в строковом потоке (StringIO).
from io import StringIO
text_data = """Первая строка
Вторая строка
Третья строка"""
stream = StringIO(text_data)
line_count = sum(1 for line in stream)
print('Строк в потоке:', line_count) # Вывод: 3
Пример 7. Подсчет строк в stdin (например, при конвейерной обработке).
import sys
line_count = sum(1 for line in sys.stdin)
print(f'Получено {line_count} строк из stdin')
Пример 8. Подсчет строк с корректной обработкой разных концов строк (\r\n, \n, \r).
mixed_text = "line1\r\nline2\nline3\rline4"
# splitlines без аргументов обрабатывает все
lines = mixed_text.splitlines()
print('Количество строк:', len(lines)) # Вывод: 4
Пример 9. Использование memory-mapped файла для очень больших данных.
import mmap
with open('huge.txt', 'rb') as f:
with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as mm:
count = 0
# Ищем все позиции символа новой строки
pos = mm.find(b'\n')
while pos != -1:
count += 1
pos = mm.find(b'\n', pos + 1)
# Последняя строка без \n
if mm[-1] != ord('\n'):
count += 1
print('Строк в отображенном файле:', count)