os.open()
возвращает дескриптор файла,flags
функции os.open()
,os.pipe()
возвращает пару файловых дескрипторов (r, w)
,os.fdopen()
возвращает открытый объект файла, связанный с дескриптором,os.read()
прочитает байты из файлового дескриптора,os.write()
запишет байтовую строку в файловый дескриптор,os.close()
закроет дескриптор файла,os.closerange()
закроет все дескрипторы, переданные как итератор,os.fchmod()
изменяет доступ к файлу по его дескриптору,os.fchown()
изменяет владельца и группу файла по его дескриптору,os.posix_openpt()
открывает и возвращает файловый дескриптор главного псевдотерминального устройства,os.ptsname()
возвращает имя подчиненного псевдотерминального устройства,os.unlockpt()
разблокирует подчиненное псевдотерминальное устройство.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, Windows
Изменено в Python 3.13: Добавлена поддержка Windows.
os.fchown(fd, uid, gid)
:Функция os.fchown()
изменяет идентификатор владельца и группы файла заданного файловым дескриптором fd
, на числовой uid
и gid
. Чтобы оставить один из идентификаторов неизменным, установите для него значение -1. Функция эквивалентна os.chown(fd, uid, gid)
.
Вызывает ОС событий аудита.chown с аргументами path, uid, gid, dir_fd.
Доступность: Unix, Windows
Изменено в Python 3.13: Добавлена поддержка Windows.
os.fstat(fd)
:Функция os.fstat()
получает статус файлового дескриптора fd
. Возвращает объект stat_result
. Функция эквивалентна вызову os.stat(fd)
.
os.posix_openpt(oflag, /)
:Функция os.posix_openpt()
открывает и возвращает файловый дескриптор главного псевдотерминального устройства.
Вызывает функцию стандартной библиотеки C posix_openpt()
. Аргумент oflag
используется для установки флагов состояния файла и режимов доступа к файлу, как указано на странице руководства posix_openpt()
вашей системы.
Добавлено в Python 3.13.
os.ptsname(fd, /)
:Функция os.ptsname()
возвращает имя подчиненного псевдотерминального устройства, связанного с главным псевдотерминальным устройством, на которое ссылается файловый дескриптор fd
. Дескриптор файла fd
не закрывается в случае сбоя.
Вызывает реентерабельную функцию стандартной библиотеки C ptsname_r()
, если она доступна, в противном случае вызывается функция стандартной библиотеки C ptsname()
, поточно-безопасность которой не гарантируется.
Добавлено в Python 3.13.
os.unlockpt(fd, /)
:Функция os.unlockpt()
разблокирует подчиненное псевдотерминальное устройство, связанное с главным псевдотерминальным устройством, на которое ссылается файловый дескриптор fd
. Дескриптор файла fd
не закрывается в случае сбоя.
Вызывает функцию стандартной библиотеки C unlockpt()
.
Добавлено в Python 3.13.