Файли і потоки
Файловий об'єкт (file object) або потік (stream) — об'єкт, який представляє файл-орієнтований програмний інтерфейс (методи read(), write() та інші) для доступа до певного ресурсу.
Залежно від способа створення, файловий об'єкт може надавати доступ до реального файла на диску або іношого виду пристроя зберігання чи передачі даних (стандартні потоки ввода/вивода, буфери у пам'яті, сокети, інше).
Як правило операційна система створює три потоки, які називають стандартними. При запуску процеса операційна система надає процесу доступ до цих потоків.
Стандартними потоками є:
- sys.stdin — за умовчанням пов'язаний з клавіатурою термінала
- sys.stdout — за умовчанням пов'язаний з екраном термінала
- sys.stderr — за умовчанням пов'язаний з екраном термінала
Види файлів в Python
Файли в Python поділяються на:
- бінарні
- текстові
У свою чергу бінарні файли поділяються на:
- буферизовані
- небуферизовані
Текстові файли вважаються буферизованими.
В Python усі класи, які пов'язані з файловими об'єктами знаходяться у вбудованому модулі io
.
Ієрархія класів наступна:
IOBase
— базовий абстрактний класRawIOBase
— абстрактний клас небуферизованих бінарних файлівFileIO
— клас для роботи з небуферизованими бінарними потоками
BufferedIOBase
— абстрактний клас буферизованих бінарних файлівBufferedReader
— зчитування даних з буферизованих бінарних потоківBufferedWriter
— запис даних у буферизовані бінарні потокиBufferedRWPair
— зчитування і запис даних для буферизованих бінарних потоківBytesIO
— "віртуальний" потік (як правило у оперативній пам'яті)
TextIOBase
— абстрактний клас текстових файлівStringIO
— "віртуальний" потік символів UnicodeTextIOWrapper
— робота з текстовими файлами
Також є клас BufferedRandom
,
який успадковано одразу від двох класів: BufferedReader
та BufferedWriter
.