Как читать большие файлы в python?

Пользователь

от urban_will , в категории: Python , 2 года назад

Как читать большие файлы в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 2 года назад

@urban_will  Самый простой метод чтения больших файлов - чтение построчно. При таком методе оперативная память не забивается.


1
2
3
with open('data.txt', 'r') as file:
    for line in file:
        print(line) 

Пользователь

от krista , год назад

@urban_will 

Чтение больших файлов в Python может быть вызовом, особенно если файл имеет очень большой размер и не может быть загружен целиком в память. Для эффективной обработки таких файлов, можно использовать следующие подходы:

  1. Чтение файла блоками: можно прочитать файл по частям, используя цикл, который будет читать часть файла за раз, а не загружать весь файл в память. Например, можно использовать метод readlines() для чтения файла построчно или метод read() для чтения файла в блоках определенного размера.
  2. Использование генераторов: генераторы могут использоваться для чтения файлов построчно или в блоках определенного размера. Генераторы позволяют обрабатывать файл по мере чтения, что может быть полезным, когда нужно быстро обработать только определенную часть файла.
  3. Использование модуля csv: если файл содержит структурированные данные, можно использовать модуль csv для чтения файла и обработки данных. Модуль csv позволяет читать файлы построчно и разбивать строки на столбцы.


Примеры кода для чтения больших файлов:

  1. Чтение файла блоками:
1
2
3
4
5
6
with open('large_file.txt', 'r') as f:
    while True:
        block = f.read(1024)  # читаем блок размером 1024 байта
        if not block:
            break
        # обработка блока


  1. Использование генераторов:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def read_file_in_blocks(file_path, block_size=1024):
    with open(file_path, 'r') as f:
        while True:
            block = f.read(block_size)
            if not block:
                return
            yield block

for block in read_file_in_blocks('large_file.txt', block_size=1024):
    # обработка блока


  1. Использование модуля csv:
1
2
3
4
5
6
import csv

with open('large_file.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        # обработка строки