Сообщить об ошибке.

Создание файлового объекта из дескриптора файла

Содержание:


os.open(path, flags, mode=0o777, *, dir_fd=None):

Функция os.open() откроет путь к файлу path и установит различные флаги в аргумент flags и режим в соответствующий аргумент mode. При вычислении mode текущее значение маски umask сначала маскируется. Функция os.open() вернет дескриптор файла для вновь открытого файла. Новый дескриптор файла не наследуется.

Константы флагов, например os.O_RDONLY и os.O_WRONLY определены в модуле os. В Windows добавлен os.O_BINARY для открытия файлов в двоичном режиме.

Функция os.open() может поддерживать пути относительно дескрипторов каталогов с параметром dir_fd. Вызывает событие аудита, open с аргументами path, mode, flags.

Примечание. Эта функция предназначена для низкоуровнего ввода/вывода. Для простого чтения или записи информации используйте встроенную функцию open(), которая возвращает объект файла с методами file.read() и file.write() и многими другими. Чтобы обернуть полученный дескриптор файла fd в объект файла, используйте функцию os.fdopen().

Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция повторяет системный вызов, а не вызывает исключение InterruptedError

Функция принимает объекты, реализующих интерфейс os.PathLike

В следующем примере используется параметр dir_fd функции os.open(), чтобы открыть файл относительно данного каталога:

>>> import os
>>> dir_fd = os.open('/some/dir', os.O_RDONLY)
>>> def opener(path, flags):
...     return os.open(path, flags, dir_fd=dir_fd)
...
>>> with open('test.txt', 'w', opener=opener) as f:
...     print('This will be written to /some/dir/test.txt', file=f)
...
# не забываем закрыть файловый дескриптор.
>>> os.close(dir_fd)

Обратите внимание на встроенный модуль mmap, который работает с файловыми дескрипторами и обеспечивает файловый ввод/вывод с отображением памяти (I/O), что позволяет использовать функциональные возможности операционной системы более низкого уровня для чтения файлов. Такое поведение может значительно улучшить производительность кода, требующего большого количества файловых операций ввода-вывода.

Опции для flags функции os.open()

Следующие константы являются опциями для параметра flags функции os.open(). Их можно объединить с помощью побитового оператора ИЛИ '|'. Некоторые из них доступны не на всех платформах. Описание их доступности и использования смотрите на странице руководства open(2) по Unix или по MSDN в Windows.

Константы доступные в Unix и Windows:

  • os.O_RDONLY,
  • os.O_WRONLY,
  • os.O_RDWR,
  • os.O_APPEND,
  • os.O_CREAT,
  • os.O_EXCL,
  • os.O_TRUNC.

Константы доступные только в Unix:

  • os.O_DSYNC,
  • os.O_RSYNC,
  • os.O_SYNC,
  • os.O_NDELAY,
  • os.O_NONBLOCK,
  • os.O_NOCTTY,
  • os.O_CLOEXEC.

Константы доступные только в Windows:

  • os.O_BINARY,
  • os.O_NOINHERIT,
  • os.O_SHORT_LIVED,
  • os.O_TEMPORARY,
  • os.O_RANDOM,
  • os.O_SEQUENTIAL,
  • os.O_TEXT.

Константы являются расширениями и не присутствуют, если они не определены библиотекой C:

  • os.O_ASYNC,
  • os.O_DIRECT,
  • os.O_DIRECTORY,
  • os.O_NOFOLLOW,
  • os.O_NOATIME,
  • os.O_PATH,
  • os.O_TMPFILE,
  • os.O_SHLOCK,
  • os.O_EXLOCK.

os.pipe():

Функция os.pipe() создает канал и возвращает пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно. Новый дескриптор файла не наследуется.

Доступность: Unix, Windows.

os.fdopen(fd, *args, **kwargs):

Функция os.fdopen() вернет открытый объект файла, связанный с дескриптором файла fd. Функция os.fdopen() псевдоним встроенной функции open() и принимает те же аргументы. Единственное отличие состоит в том, что первый аргумент функции os.fdopen() всегда должен быть целым числом.

os.read(fd, n):

Функция os.read() прочитает не более n байтов из файлового дескриптора fd.

Возвращает строку байтов, содержащую прочитанные байты. Если достигнут конец файла, на который указывает fd, возвращается пустой объект байтов.

Примечание. Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, возвращаемому функцией os.open() или os.pipe(). Чтобы прочитать "файловый объект", возвращаемый встроенной функцией open() или os.popen(), os.fdopen() или sys.stdin, используйте методы file.read() или file.readline().

os.write(fd, str):

Функция os.write() запишет байтовую строку в аргумент str в файловый дескриптор fd. Вернет количество фактически записанных байтов.

Примечание*. Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, возвращаемому функцией os.open() или os.pipe(). Чтобы записать в "файловый объект", возвращаемый встроенной функцией open() или os.popen(), os.fdopen() или sys.stout или sys.stderr, используйте метод file.write().

os.close(fd):

Функция os.close() закроет дескриптор файла fd.

Примечание*. Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, возвращаемому функцией os.open() или os.pipe(). Чтобы закрыть "файловый объект", возвращаемый встроенной функцией open() или os.popen() или os.fdopen() используйте метод file.close().

os.closerange(fd_low, fd_high):

Функция os.write() закроет все файловые дескрипторы от fd_low включительно до fd_high исключительно, игнорируя ошибки. Эквивалент этой функции, но намного быстрее:

for fd in range(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass

os.fchmod(fd, mode):

Функция os.fchmod() изменяет режим доступа к файлу заданного файловым дескриптором fd, на числовой режим mode. Смотрите документацию по функции os.chmod() для возможных значений режима mode. Функция эквивалентна os.chmod(fd, mode).

Функция os.fchmod() вызывает событие аудита os.chmod с аргументами path, mode, dir_fd.

Доступность: Unix.

os.fchown(fd, uid, gid):

Функция os.fchown() изменяет идентификатор владельца и группы файла заданного файловым дескриптором fd, на числовой uid и gid. Чтобы оставить один из идентификаторов неизменным, установите для него значение -1. Функция эквивалентна os.chown(fd, uid, gid).

Вызывает ОС событий аудита.chown с аргументами path, uid, gid, dir_fd.

Доступность: Unix.

os.fstat(fd):

Функция os.fstat() получает статус файлового дескриптора fd. Возвращает объект stat_result. Функция эквивалентна вызову os.stat(fd).