Модуль os содержит дополнительный набор функций для работы с файлами, отличных от инструментов, которыми располагают встроенные объекты файлов, демонстрировавшиеся в предыдущих примерах. Например, ниже приводится неполный список функций в модуле os, имеющих отношение к файлам:
os.open(path, flags, mode)
Открывает файл, возвращает его дескриптор
os.read(descriptor, N)
Читает не более N байтов и возвращает строку байтов os.write(descriptor, string)
Записывает в файл байты из строки байтов string os.lseek(descriptor, position, how)
Перемещается в позицию position в файле
С технической точки зрения, функции из модуля os обрабатывают файлы по их дескрипторам, которые представляют собой целочисленные коды или «описатели» (handles), идентифицирующие файлы в операционной системе. Файлы, представленные дескрипторами, интерпретируются как обычные двоичные файлы, к которым не применяются ни преобразование символов конца строки, ни кодирование текста, о которых рассказывалось в предыдущем разделе. Фактически, за исключением отдельных особенностей, таких как буферизация, операции с файлами, представленными дескрипторами, мало чем отличаются от операций, поддерживаемых объектами файлов для двоичного режима. При работе с такими файлами мы также читаем и пишем строки типа bytes, а не str. Однако так как инструменты для работы с файлами с использованием дескрипторов, представленные в модуле os, — более низкого уровня и более сложны в применении, чем встроенные объекты файлов, создаваемые с помощью встроенной функции open, то следует использовать последние во всех ситуациях, за исключением отдельных случаев специальной обработки файлов.[IX]
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011