Перейти до змісту

Файли і потоки

Файловий об'єкт (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 — "віртуальний" потік символів Unicode
      • TextIOWrapper — робота з текстовими файлами

Також є клас BufferedRandom, який успадковано одразу від двох класів: BufferedReader та BufferedWriter.

Back to top