Какие знаешь варианты работы с большим файлом в Python
Python
Middle
Без компании
Какие знаешь варианты работы с большим файлом в Python
Ответы
Для работы с большими файлами в Python есть несколько подходов:
- **Чтение по строкам** (итеративное):
```
with open('large_file.txt', 'r') as f:
for line in f: # читает по одной строке
process(line)
```
- **Чтение чанками** (фиксированными блоками):
```
chunk_size = 1024
with open('large_file.bin', 'rb') as f:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
process(chunk)
```
- **Использование генераторов** для обработки данных:
```
def read_large_file(file):
while True:
data = file.read(8192)
if not data:
break
yield data
```
- **Модуль mmap** (memory-mapped files):
```
import mmap
with open('large_file', 'r+') as f:
mm = mmap.mmap(f.fileno(), 0)
# работаем как с байтовой строкой
```
Ключевые моменты:
- Всегда используйте `with` для автоматического закрытия файла
- Для бинарных данных используйте режим 'rb'
- Избегайте `read()` без параметров для больших файлов
- Для CSV/JSON можно использовать pandas с `chunksize`