Как считать несколько строк в Python

Как считать несколько строк python

Как считать несколько строк python

Работа с файлами в Python часто требует обработки не одной, а сразу нескольких строк. Важно понимать, какие методы позволяют считать блоки текста и как они отличаются по скорости и удобству.

Функция readlines() загружает весь файл в список, где каждая строка становится отдельным элементом. Этот способ удобен для небольших файлов, но при больших объёмах данных потребляет много памяти.

Если нужно ограничить количество строк, можно использовать цикл с функцией readline(). Такой подход позволяет считывать текст поэтапно, что снижает нагрузку на память.

Для обработки потока данных предпочтительнее применять итерацию по объекту файла: for line in file. Это даёт возможность читать строки последовательно, не загружая весь файл целиком.

Чтение фиксированного количества строк с помощью метода readline()

Чтение фиксированного количества строк с помощью метода readline()

Метод readline() возвращает одну строку из файла за один вызов. Чтобы получить несколько строк подряд, его вызывают внутри цикла с заданным числом итераций.

Пример: нужно считать первые три строки файла:

with open("data.txt", "r", encoding="utf-8") as f:
for _ in range(3):
line = f.readline()
if not line:
break
print(line.strip())

Проверка if not line необходима, если в файле меньше строк, чем указано. В таком случае чтение остановится корректно.

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

Использование цикла for для построчного чтения

Цикл for позволяет проходить по файлу строка за строкой без загрузки всего содержимого в память. Такой способ подходит для работы с большими файлами.

Пример:

with open("data.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())

Здесь каждая итерация возвращает одну строку. Метод strip() убирает перевод строки и лишние пробелы. Если нужен контроль над количеством строк, можно добавить enumerate() и ограничение по номеру:

with open("data.txt", "r", encoding="utf-8") as f:
for i, line in enumerate(f, start=1):
if i > 10:
break
print(line.strip())

Цикл for автоматически закрывает итерацию при достижении конца файла, что делает его надёжным инструментом для последовательного чтения.

Получение списка строк с помощью readlines()

Метод readlines() возвращает все строки файла в виде списка, где каждая строка оканчивается символом перевода строки \n. Такой подход удобен, если необходимо обработать файл построчно без ручного цикла чтения.

Пример:

with open("data.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(lines)

В результате каждая строка файла окажется отдельным элементом списка. При этом символы \n сохраняются, их можно удалить методом strip() или rstrip() при обработке:

cleaned = [line.strip() for line in lines]

Метод подходит для небольших файлов. При работе с большими объёмами данных предпочтительнее использовать итерацию по объекту файла, чтобы не загружать всё содержимое в память.

Ограничение числа строк при чтении через itertools.islice()

Функция itertools.islice() позволяет задать точный диапазон строк, которые нужно прочитать, не загружая весь файл в память. Это особенно удобно при работе с большими логами или CSV.

Пример чтения первых пяти строк:

from itertools import islice
with open("data.txt", "r", encoding="utf-8") as f:
for line in islice(f, 5):
print(line.strip())

Можно задать начальный индекс и конечный предел:

with open("data.txt", "r", encoding="utf-8") as f:
for line in islice(f, 10, 20):
print(line.strip())

Сравнение параметров islice():

Сигнатура Поведение
islice(f, n) чтение первых n строк
islice(f, start, stop) чтение строк с start по stop-1
islice(f, start, stop, step) чтение с шагом, например каждая вторая строка

Подход исключает избыточные операции: не требуется считывать весь файл, строки обрабатываются потоково.

Обработка больших файлов построчно без загрузки в память

При работе с файлами размером в гигабайты критично избегать загрузки всего содержимого в память. В Python для этого удобно использовать итерацию по файлу.


with open("data.log", "r", encoding="utf-8") as f:
for line in f:
# обработка строки
process(line)

Файл открывается в режиме чтения, а цикл for считывает данные построчно, не создавая лишних копий.

  • with open(...) гарантирует закрытие файла даже при ошибках.
  • Итерация по объекту файла не использует метод readlines(), который загружает всё содержимое в список.
  • Можно добавить счётчик строк с помощью enumerate(f, start=1).

Для двоичных файлов или контроля буфера используйте open(..., buffering=8192). Размер буфера подбирается экспериментально в зависимости от скорости диска.


with open("bigfile.csv", "r", buffering=16384) as f:
for i, row in enumerate(f):
if i % 100000 == 0:
print(i)

Такой подход позволяет обрабатывать файлы потоково, выполнять фильтрацию или запись результатов в другой файл без перегрузки памяти.

Чтение нескольких строк из стандартного ввода

Для чтения нескольких строк в Python чаще всего используют цикл с функцией input(). Если заранее известно количество строк, можно выполнить:

n = int(input())
lines = [input() for _ in range(n)]

Здесь n задаёт число строк, которые будут считаны, а список lines хранит каждую строку отдельно.

Если количество строк заранее неизвестно, удобен цикл с обработкой исключения EOFError:

lines = []
while True:
  try:
    line = input()
    lines.append(line)
  except EOFError:
    break

Этот подход позволяет считывать строки до конца ввода. Каждая новая строка добавляется в список lines без потери данных.

Для обработки больших объёмов данных удобнее использовать sys.stdin:

import sys
lines = [line.rstrip('\\n') for line in sys.stdin]

Метод rstrip(‘\\n’) удаляет символы новой строки, обеспечивая чистые строки в списке. Этот способ эффективен при чтении файлов через перенаправление ввода или при потоковой обработке.

При необходимости сразу разделять строки на слова применяют split():

words = [word for line in lines for word in line.split()]

Такой приём формирует плоский список всех слов из считанных строк без дополнительных циклов.

Чтение нескольких строк в формате CSV

Для работы с CSV-файлами в Python применяется встроенный модуль csv. Открытие файла выполняется через функцию open с указанием режима ‘r’ и кодировки, например utf-8:

with open('data.csv', 'r', encoding='utf-8') as file:

Создание объекта чтения осуществляется с помощью csv.reader, который возвращает строки в виде списков:

reader = csv.reader(file)

Чтобы считать все строки, используется цикл for:

for row in reader:
    print(row)

Для выборочного считывания первых N строк можно применить функцию itertools.islice:

from itertools import islice
with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in islice(reader, 5):
        print(row)

Если необходимо преобразовать строки в словари с ключами из заголовка, используется csv.DictReader:

with open('data.csv', 'r', encoding='utf-8') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Имя'], row['Возраст'])

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

Для файлов с нестандартными разделителями параметр delimiter указывает нужный символ, например csv.reader(file, delimiter=’;’).

Подсчёт количества строк при итерации по файлу

Подсчёт количества строк при итерации по файлу

Для подсчёта строк в файле Python позволяет использовать итерацию напрямую по объекту файла. Такой метод экономит память, так как строки обрабатываются по одной, без загрузки всего файла.

Пример базового подхода:

count = 0
with open('file.txt', 'r', encoding='utf-8') as f:
for line in f:
count += 1
print(f"Количество строк: {count}")

Рекомендации по использованию:

  • Используйте контекстный менеджер with для автоматического закрытия файла.
  • Учитывайте, что каждая итерация возвращает строку с символом переноса строки \n, если нужно работать с содержимым без него, применяйте line.strip().
  • Для больших файлов такой подход предпочтительнее чтения всего файла через readlines(), чтобы не перегружать память.
  • Если нужна проверка на непустые строки, добавьте условие if line.strip(): count += 1.

Альтернативный вариант с генератором:

with open('file.txt', 'r', encoding='utf-8') as f:
count = sum(1 for _ in f)
print(f"Количество строк: {count}")

Использование генератора ускоряет подсчёт, так как не создаёт промежуточный список. Этот метод особенно удобен для обработки файлов с миллионами строк.

Вопрос-ответ:

Ссылка на основную публикацию