Содержание страницы
16.1. os – Различные интерфейсы операционной системы¶os – Miscellaneous operating system interfaces
Этот модуль предоставляет переносимый способ использования функциональности, зависящей от операционной системы. Если нужно просто прочитать или записать файл, см. open(); для работы с путями предназначен модуль os.path; а если нужно прочитать все строки из всех файлов, указанных в командной строке – модуль fileinput. Для создания временных файлов и каталогов предназначен модуль tempfile, а для высокоуровневой работы с файлами и каталогами – модуль shutil.
Примечания о доступности этих функций:
- Все встроенные модули Python, зависящие от операционной системы, спроектированы так, что везде, где доступна одна и та же функциональность, используется один и тот же интерфейс. Например, функция os.stat(path) возвращает информацию stat о path в одном и том же формате (который, как оказалось, берёт начало от интерфейса POSIX).
- Расширения, характерные для конкретной операционной системы, также доступны через модуль os, однако их использование, конечно, угрожает переносимости.
- Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.
- Примечание «Доступность: Unix» означает, что эта функция обычно встречается в системах Unix. Оно не утверждает о её существовании в конкретной операционной системе.
- Если не указано иное, все функции, для которых указано «Доступность: Unix», поддерживаются на Mac OS X, построенной на ядре Unix.
Примечание
Все функции этого модуля возбуждают исключение OSError в случае некорректных или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.
- os.name¶
Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: 'posix', 'nt', 'mac', 'os2', 'ce', 'java'.
См. также
sys.platform имеет более тонкую гранулярность. os.uname() возвращает информацию о версии, зависящую от системы.
Модуль platform предоставляет подробные проверки идентификационных данных системы.
16.1.1. Имена файлов, аргументы командной строки и переменные окружения¶File Names, Command Line Arguments, and Environment Variables
В Python имена файлов, аргументы командной строки и переменные окружения представлены строковым типом. На некоторых системах перед передачей операционной системе необходимо декодировать эти строки в байты и обратно. Python использует кодировку файловой системы для выполнения этого преобразования (см. sys.getfilesystemencoding()).
Изменено в версии 3.1: На некоторых системах преобразование с использованием кодировки файловой системы может завершиться неудачей. В этом случае Python использует обработчик ошибок кодирования surrogateescape, что означает, что нераскодируемые байты заменяются на символ Unicode U+DCxx при декодировании, а при кодировании снова преобразуются в исходный байт.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может этого гарантировать, функции API могут вызывать исключения Unicode.
16.1.2. Параметры процесса¶Process Parameters
Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.
- os.ctermid()¶
Возвращает имя файла, соответствующее управляющему терминалу процесса.
Доступность: Unix.
- os.environ¶
Объект отображения, представляющий строковое окружение. Например, environ['HOME'] – это путь к домашнему каталогу (на некоторых платформах), и эквивалентно getenv("HOME") в C.
Это отображение фиксируется при первом импорте модуля os, обычно во время запуска Python в рамках обработки site.py. Изменения окружения, сделанные после этого, не отражаются в os.environ, за исключением изменений, внесённых непосредственным изменением os.environ.
Если платформа поддерживает функцию putenv(), это отображение может использоваться как для изменения, так и для запроса окружения. putenv() будет вызываться автоматически при изменении отображения.
В Unix ключи и значения используют sys.getfilesystemencoding() и обработчик ошибок 'surrogateescape'. Используйте environb, если нужна другая кодировка.
Примечание
Прямой вызов putenv() не изменяет os.environ, поэтому лучше изменять os.environ.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, установка environ может вызывать утечки памяти. Обратитесь к системной документации по putenv().
Если putenv() не предусмотрена, изменённая копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённое окружение.
Если платформа поддерживает функцию unsetenv(), можно удалять элементы из этого отображения для снятия переменных окружения. unsetenv() будет вызываться автоматически при удалении элемента из os.environ, а также при вызове одного из методов pop() или clear().
- os.environb¶
Байтовая версия environ: объект отображения, представляющий окружение в виде байтовых строк. environ и environb синхронизируются (изменение environb обновляет environ и наоборот).
environb доступен только если supports_bytes_environ равно True.
Новое в версии 3.2.
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
Эти функции описаны в Files and Directories.
- os.fsencode(filename)¶
Кодирует filename в кодировку файловой системы с обработчиком ошибок 'surrogateescape' или 'strict' в Windows; возвращает bytes без изменений.
fsdecode() – это обратная функция.
Новое в версии 3.2.
- os.fsdecode(filename)¶
Декодирует filename из кодировки файловой системы с обработчиком ошибок 'surrogateescape' или 'strict' в Windows; возвращает str без изменений.
fsencode() – это обратная функция.
Новое в версии 3.2.
- os.getenv(key, default=None)¶
Возвращает значение переменной окружения ключ, если она существует, или значение по умолчанию, если нет. ключ, значение по умолчанию и результат имеют тип str.
В Unix ключи и значения декодируются с помощью sys.getfilesystemencoding() и обработчика ошибок 'surrogateescape'. Используйте os.getenvb(), если требуется другая кодировка.
Доступность: большинство разновидностей Unix, Windows.
- os.getenvb(key, default=None)¶
Возвращает значение переменной окружения ключ, если она существует, или значение по умолчанию, если нет. ключ, значение по умолчанию и результат имеют тип bytes.
Доступность: большинство разновидностей Unix.
Новое в версии 3.2.
- os.get_exec_path(env=None)¶
Возвращает список каталогов, в которых будет производиться поиск указанного исполняемого файла, аналогично командной оболочке, при запуске процесса. Если передан аргумент env, он должен быть словарём переменных окружения, в котором ищется PATH. По умолчанию, когда env равен None, используется environ.
Новое в версии 3.2.
- os.getegid()¶
Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.
Доступность: Unix.
- os.geteuid()¶
Возвращает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
- os.getgid()¶
Возвращает реальный идентификатор группы текущего процесса.
Доступность: Unix.
- os.getgrouplist(user, group)¶
Возвращает список идентификаторов групп, к которым принадлежит user. Если group отсутствует в списке, она добавляется; обычно group указывается как поле идентификатора группы из записи пароля для user.
Доступность: Unix.
Новое в версии 3.3.
- os.getgroups()¶
Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.
Доступность: Unix.
Примечание
В Mac OS X поведение getgroups() несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания 10.5 или более ранней, getgroups() возвращает список эффективных идентификаторов групп, связанных с процессом текущего пользователя; этот список ограничен определяемым системой количеством записей, обычно 16, и может быть изменён вызовами setgroups() при наличии соответствующих привилегий. Если сборка выполнена с целевой версией развёртывания больше 10.5, getgroups() возвращает текущий список доступных групп для пользователя, связанного с эффективным идентификатором пользователя процесса; этот список может меняться в течение времени жизни процесса, на него не влияют вызовы setgroups(), и его длина не ограничена 16. Значение целевой версии развёртывания, MACOSX_DEPLOYMENT_TARGET, можно получить с помощью sysconfig.get_config_var().
- os.getlogin()¶
Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей удобнее использовать переменные окружения LOGNAME или USERNAME, чтобы узнать, кто пользователь, или pwd.getpwuid(os.getuid())[0] для получения имени входа текущего реального идентификатора пользователя.
Доступность: Unix, Windows.
- os.getpgid(pid)¶
Возвращает идентификатор группы процессов для процесса с идентификатором pid. Если pid равен 0, возвращается идентификатор группы текущего процесса.
Доступность: Unix.
- os.getpgrp()¶
Возвращает идентификатор текущей группы процессов.
Доступность: Unix.
- os.getpid()¶
Возвращает идентификатор текущего процесса.
Доступность: Unix, Windows.
- os.getppid()¶
Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), а в Windows – тот же самый идентификатор, который к тому моменту может быть уже занят другим процессом.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
- os.getpriority(which, who)¶
Получает приоритет планирования процесса. Значение which – одно из PRIO_PROCESS, PRIO_PGRP или PRIO_USER, а who интерпретируется относительно which (идентификатор процесса для PRIO_PROCESS, идентификатор группы процессов для PRIO_PGRP и идентификатор пользователя для PRIO_USER). Нулевое значение who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.
Доступность: Unix.
Новое в версии 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
Параметры для функций getpriority() и setpriority().
Доступность: Unix.
Новое в версии 3.3.
- os.getresuid()¶
Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix.
Новое в версии 3.2.
- os.getresgid()¶
Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix.
Новое в версии 3.2.
- os.getuid()¶
Возвращает идентификатор пользователя текущего процесса.
Доступность: Unix.
- os.initgroups(username, gid)¶
Вызывает системную функцию initgroups() для инициализации списка доступа к группам, который включает все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.
Доступность: Unix.
Новое в версии 3.2.
- os.putenv(key, value)¶
Устанавливает переменную окружения с именем key в строковое значение value. Такие изменения окружения влияют на подпроцессы, запущенные с помощью os.system(), popen() или fork() и execv().
Доступность: большинство разновидностей Unix, Windows.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, изменение environ может привести к утечкам памяти. Обратитесь к системной документации по putenv.
Когда putenv() поддерживается, присваивания элементам os.environ автоматически преобразуются в соответствующие вызовы putenv(); однако вызовы putenv() не обновляют os.environ, так что на самом деле предпочтительнее присваивать значения элементам os.environ.
- os.setegid(egid)¶
Устанавливает эффективный идентификатор группы текущего процесса.
Доступность: Unix.
- os.seteuid(euid)¶
Устанавливает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
- os.setgid(gid)¶
Устанавливает идентификатор группы текущего процесса.
Доступность: Unix.
- os.setgroups(groups)¶
Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в groups. groups должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.
Доступность: Unix.
Примечание
На Mac OS X длина groups не может превышать заданное системой максимальное количество идентификаторов эффективных групп, обычно 16. Обратитесь к документации по getgroups() в случаях, когда она может не вернуть тот же список групп, который был установлен вызовом setgroups().
- os.setpgrp()¶
Вызывает системный вызов setpgrp() или setpgrp(0, 0) в зависимости от того, какая версия реализована (если таковая имеется). Обратитесь к руководству Unix за семантикой.
Доступность: Unix.
- os.setpgid(pid, pgrp)¶
Вызывает системный вызов setpgid(), чтобы установить идентификатор группы процесса с идентификатором pid в группу с идентификатором pgrp. Обратитесь к руководству Unix за семантикой.
Доступность: Unix.
- os.setpriority(which, who, priority)¶
Устанавливает приоритет планирования программы. Значение which – одно из PRIO_PROCESS, PRIO_PGRP или PRIO_USER, а who интерпретируется относительно which (идентификатор процесса для PRIO_PROCESS, идентификатор группы процессов для PRIO_PGRP и идентификатор пользователя для PRIO_USER). Нулевое значение who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. priority – значение в диапазоне от -20 до 19. Приоритет по умолчанию – 0; меньшие приоритеты обеспечивают более благоприятное планирование.
Доступность: Unix
Новое в версии 3.3.
- os.setregid(rgid, egid)¶
Устанавливает реальный и эффективный идентификаторы группы текущего процесса.
Доступность: Unix.
- os.setresgid(rgid, egid, sgid)¶
Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix.
Новое в версии 3.2.
- os.setresuid(ruid, euid, suid)¶
Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix.
Новое в версии 3.2.
- os.setreuid(ruid, euid)¶
Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.
Доступность: Unix.
- os.getsid(pid)¶
Вызывает системный вызов getsid(). Обратитесь к руководству Unix за семантикой.
Доступность: Unix.
- os.setsid()¶
Вызывает системный вызов setsid(). Обратитесь к руководству Unix за семантикой.
Доступность: Unix.
- os.setuid(uid)¶
Устанавливает идентификатор пользователя текущего процесса.
Доступность: Unix.
- os.strerror(code)¶
Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где strerror() возвращает NULL при получении неизвестного номера ошибки, возбуждается ValueError.
Доступность: Unix, Windows.
- os.supports_bytes_environ¶
True, если собственный тип окружения в ОС – bytes (например, False в Windows).
Новое в версии 3.2.
- os.umask(mask)¶
Устанавливает текущую числовую umask и возвращает предыдущую umask.
Доступность: Unix, Windows.
- os.uname()¶
Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение – объект с пятью атрибутами:
- sysname – имя операционной системы
- nodename – имя машины в сети (зависит от реализации)
- release – релиз операционной системы
- version – версия операционной системы
- machine – идентификатор оборудования
Для обратной совместимости этот объект также является итерируемым, ведя себя как кортеж из пяти элементов, содержащий sysname, nodename, release, version и machine в указанном порядке.
Некоторые системы обрезают nodename до 8 символов или до первого компонента; лучший способ получить имя хоста – socket.gethostname() или даже socket.gethostbyaddr(socket.gethostname()).
Доступность: современные версии Unix.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.
- os.unsetenv(key)¶
Удаляет переменную окружения с именем key. Такие изменения окружения влияют на подпроцессы, запущенные с помощью os.system(), popen() или fork() и execv().
Если unsetenv() поддерживается, удаление элементов из os.environ автоматически преобразуется в соответствующий вызов unsetenv(); однако вызовы unsetenv() не обновляют os.environ, поэтому на самом деле предпочтительнее удалять элементы из os.environ.
Доступность: большинство разновидностей Unix, Windows.
16.1.3. Создание файлового объекта¶File Object Creation
Эта функция создаёт новые файловые объекты. (См. также open() для открытия файловых дескрипторов.)
16.1.4. Операции с файловыми дескрипторами¶File Descriptor Operations
Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.
Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.
Метод fileno() можно использовать для получения файлового дескриптора, связанного с файловым объектом при необходимости. Обратите внимание, что использование файлового дескриптора напрямую обходит методы файлового объекта, игнорируя такие аспекты, как внутренняя буферизация данных.
- os.close(fd)¶
Закрывает файловый дескриптор fd.
Доступность: Unix, Windows.
- os.closerange(fd_low, fd_high)¶
Закрывает все файловые дескрипторы от fd_low (включительно) до fd_high (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
Доступность: Unix, Windows.
- os.device_encoding(fd)¶
Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; иначе возвращает None.
- os.dup(fd)¶
Возвращает дубликат файлового дескриптора fd.
Доступность: Unix, Windows.
- os.dup2(fd, fd2)¶
Дублирует файловый дескриптор fd в fd2, закрывая последний дескриптор сначала, если необходимо.
Доступность: Unix, Windows.
- os.fchmod(fd, mode)¶
Изменяет режим файла, заданного fd, на числовой mode. См. документацию по chmod() для возможных значений mode. Начиная с Python 3.3, это эквивалентно os.chmod(fd, mode).
Доступность: Unix.
- os.fchown(fd, uid, gid)¶
Изменяет идентификаторы владельца и группы файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См. chown(). Начиная с Python 3.3, это эквивалентно os.chown(fd, uid, gid).
Доступность: Unix.
- os.fdatasync(fd)¶
Принудительная запись файла с файловым дескриптором fd на диск. Не принуждает к обновлению метаданных.
Доступность: Unix.
Примечание
Эта функция недоступна в MacOS.
- os.fpathconf(fd, name)¶
Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. name определяет извлекаемое значение конфигурации; это может быть строка, являющаяся именем определённого системного значения; эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, перечислены в словаре pathconf_names. Для переменных конфигурации, не включённых в это сопоставление, также допускается передача целого числа для name.
Если name – строка и она неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно есть в pathconf_names, возбуждается OSError с кодом ошибки errno.EINVAL.
Начиная с Python 3.3, это эквивалентно os.pathconf(fd, name).
Доступность: Unix.
- os.fstat(fd)¶
Возвращает статус для файлового дескриптора fd, как stat(). Начиная с Python 3.3, это эквивалентно os.stat(fd).
Доступность: Unix, Windows.
- os.fstatvfs(fd)¶
Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором fd, как statvfs(). Начиная с Python 3.3, это эквивалентно os.statvfs(fd).
Доступность: Unix.
- os.fsync(fd)¶
Принудительно записывает файл с файловым дескриптором fd на диск. В Unix вызывает нативную функцию fsync(); в Windows – функцию MS _commit().
Если вы работаете с буферизованным файловым объектом Python f, сначала вызовите f.flush(), а затем os.fsync(f.fileno()), чтобы все внутренние буферы, связанные с f, были записаны на диск.
Доступность: Unix, Windows.
- os.ftruncate(fd, length)¶
Усекает файл, соответствующий файловому дескриптору fd, так чтобы его размер не превышал length байт. Начиная с Python 3.3, это эквивалентно os.truncate(fd, length).
Доступность: Unix.
- os.isatty(fd)¶
Возвращает True, если файловый дескриптор fd открыт и связан с tty-подобным устройством, иначе False.
- os.lockf(fd, cmd, len)¶
Применяет, проверяет или снимает блокировку POSIX на открытом файловом дескрипторе. fd – открытый файловый дескриптор. cmd задаёт команду: одну из F_LOCK, F_TLOCK, F_ULOCK или F_TEST. len указывает блокируемый участок файла.
Доступность: Unix.
Новое в версии 3.3.
- os.F_LOCK¶
- os.F_TLOCK¶
- os.F_ULOCK¶
- os.F_TEST¶
Флаги, определяющие действие функции lockf().
Доступность: Unix.
Новое в версии 3.3.
- os.lseek(fd, pos, how)¶
Устанавливает текущую позицию файлового дескриптора fd в позицию pos, изменяемую параметром how: SEEK_SET или 0 – позиция относительно начала файла; SEEK_CUR или 1 – относительно текущей позиции; SEEK_END или 2 – относительно конца файла. Возвращает новую позицию курсора в байтах от начала файла.
Доступность: Unix, Windows.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Параметры функции lseek(). Их значения – 0, 1 и 2 соответственно.
Доступность: Unix, Windows.
Новое в версии 3.3: Некоторые операционные системы могут поддерживать дополнительные значения, такие как os.SEEK_HOLE или os.SEEK_DATA.
- os.open(file, flags, mode=0o777, *, dir_fd=None)¶
Открывает файл file и устанавливает различные флаги согласно flags и, возможно, его режим согласно mode. При вычислении mode сначала применяется текущее значение umask. Возвращает файловый дескриптор для только что открытого файла.
Описание значений флагов и режимов смотрите в документации времени выполнения C; константы флагов (например, O_RDONLY и O_WRONLY) также определены в этом модуле (см. Константы флагов open()). В частности, в Windows для открытия файлов в двоичном режиме необходимо добавить O_BINARY.
Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Доступность: Unix, Windows.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования применяйте встроенную функцию open(), которая возвращает файловый объект с методами read() и write() (и многими другими). Чтобы обернуть файловый дескриптор в файловый объект, используйте fdopen().
Новое в версии 3.3: Аргумент dir_fd.
- os.openpty()¶
Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов (master, slave) для pty и tty соответственно. Для (чуть) более переносимого подхода используйте модуль pty.
Доступность: некоторые разновидности Unix.
- os.pipe()¶
Создаёт канал (pipe). Возвращает пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно.
Доступность: Unix, Windows.
- os.pipe2(flags)¶
Создаёт канал с атомарной установкой flags. flags можно сконструировать, объединяя (OR) одно или несколько из следующих значений: O_NONBLOCK, O_CLOEXEC. Возвращает пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно.
Доступность: некоторые разновидности Unix.
Новое в версии 3.3.
- os.posix_fallocate(fd, offset, len)¶
Гарантирует, что для файла, указанного в fd, выделено достаточно дискового пространства, начиная с offset и продолжаясь на len байтов.
Доступность: Unix.
Новое в версии 3.3.
- os.posix_fadvise(fd, offset, len, advice)¶
Объявляет о намерении получить доступ к данным по определённому шаблону, позволяя ядру выполнять оптимизации. Совет (advice) применяется к области файла, заданной fd, начиная с offset и продолжающейся на len байт. advice – одно из значений: POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED или POSIX_FADV_DONTNEED.
Доступность: Unix.
Новое в версии 3.3.
- os.POSIX_FADV_NORMAL¶
- os.POSIX_FADV_SEQUENTIAL¶
- os.POSIX_FADV_RANDOM¶
- os.POSIX_FADV_NOREUSE¶
- os.POSIX_FADV_WILLNEED¶
- os.POSIX_FADV_DONTNEED¶
Флаги, которые можно использовать в advice в posix_fadvise(), задающие шаблон доступа, который может быть использован.
Доступность: Unix.
Новое в версии 3.3.
- os.pread(fd, buffersize, offset)¶
Чтение из файлового дескриптора fd начиная с позиции offset. Будет прочитано до buffersize байт. Смещение в файле остаётся неизменным.
Доступность: Unix.
Новое в версии 3.3.
- os.pwrite(fd, string, offset)¶
Записывает string в файловый дескриптор fd, начиная со смещения offset, не изменяя смещение в файле.
Доступность: Unix.
Новое в версии 3.3.
- os.read(fd, n)¶
Читает не более n байт из файлового дескриптора fd. Возвращает объект bytes, содержащий прочитанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустой объект bytes.
Доступность: Unix, Windows.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому os.open() или pipe(). Чтобы прочитать «файловый объект», возвращённый встроенной функцией open() или popen(), или fdopen(), или sys.stdin, используйте его методы read() или readline().
- os.sendfile(out, in, offset, nbytes)¶
- os.sendfile(out, in, offset, nbytes, headers=None, trailers=None, flags=0)
Копирует nbytes байт из файлового дескриптора in в файловый дескриптор out, начиная со смещения offset. Возвращает количество отправленных байт. При достижении EOF возвращает 0.
Первая форма записи функции поддерживается всеми платформами, где определена sendfile().
В Linux, если offset задан как None, байты читаются из текущей позиции in, и позиция in обновляется.
Второй случай может использоваться в Mac OS X и FreeBSD, где headers и trailers являются произвольными последовательностями буферов, которые записываются до и после записи данных из in. Возвращаемое значение такое же, как в первом случае.
На Mac OS X и FreeBSD значение 0 для nbytes означает отправку до конца in.
Все платформы поддерживают сокеты в качестве файлового дескриптора out, а некоторые платформы также допускают другие типы (например, обычный файл, канал).
Доступность: Unix.
Новое в версии 3.3.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
Параметры для функции sendfile(), если реализация их поддерживает.
Доступность: Unix.
Новое в версии 3.3.
- os.readv(fd, buffers)¶
Читает из файлового дескриптора fd в несколько изменяемых объектов, подобных байтам buffers. readv() передаёт данные в каждый буфер, пока он не заполнится, затем переходит к следующему буферу в последовательности для хранения остатка данных. readv() возвращает общее количество прочитанных байт (которое может быть меньше общей ёмкости всех объектов).
Доступность: Unix.
Новое в версии 3.3.
- os.tcgetpgrp(fd)¶
Возвращает группу процессов, связанную с терминалом, заданным fd (открытый файловый дескриптор, возвращаемый os.open()).
Доступность: Unix.
- os.tcsetpgrp(fd, pg)¶
Устанавливает группу процессов, связанную с терминалом, задаваемым fd (открытым файловым дескриптором, возвращаемым os.open()), равной pg.
Доступность: Unix.
- os.ttyname(fd)¶
Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором fd. Если fd не связан с терминальным устройством, возбуждается исключение.
Доступность: Unix.
- os.write(fd, str)¶
Записывает объект bytes из str в файловый дескриптор fd. Возвращает количество фактически записанных байт.
Доступность: Unix, Windows.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому os.open() или pipe(). Для записи в «файловый объект», возвращаемый встроенной функцией open() или popen(), или fdopen(), или sys.stdout, или sys.stderr, используйте его метод write().
- os.writev(fd, buffers)¶
Записывает содержимое buffers в файловый дескриптор fd. buffers должна быть последовательностью байтоподобных объектов. writev() записывает содержимое каждого объекта в файловый дескриптор и возвращает общее количество записанных байт.
Доступность: Unix.
Новое в версии 3.3.
16.1.4.1. open() константы флагов¶open() flag constants
Следующие константы являются опциями для параметра flags функции open(). Их можно комбинировать с помощью побитового оператора ИЛИ (|). Некоторые из них доступны не на всех платформах. Описания доступности и использования см. в справочной странице open(2) в Unix или в MSDN в Windows.
- os.O_RDONLY¶
- os.O_WRONLY¶
- os.O_RDWR¶
- os.O_APPEND¶
- os.O_CREAT¶
- os.O_EXCL¶
- os.O_TRUNC¶
Эти константы доступны в Unix и Windows.
- os.O_DSYNC¶
- os.O_RSYNC¶
- os.O_SYNC¶
- os.O_NDELAY¶
- os.O_NONBLOCK¶
- os.O_NOCTTY¶
- os.O_SHLOCK¶
- os.O_EXLOCK¶
- os.O_CLOEXEC¶
Эти константы доступны только в Unix.
Изменено в версии 3.3: Добавлена константа O_CLOEXEC.
- os.O_BINARY¶
- os.O_NOINHERIT¶
- os.O_SHORT_LIVED¶
- os.O_TEMPORARY¶
- os.O_RANDOM¶
- os.O_SEQUENTIAL¶
- os.O_TEXT¶
Эти константы доступны только в Windows.
16.1.4.2. Определение размера терминала¶Querying the size of a terminal
Новое в версии 3.3.
- os.get_terminal_size(fd=STDOUT_FILENO)¶
Возвращает размер окна терминала в виде (columns, lines), кортежа типа terminal_size.
Необязательный аргумент fd (по умолчанию STDOUT_FILENO, или стандартный вывод) указывает, какой файловый дескриптор следует опрашивать.
Если файловый дескриптор не подключён к терминалу, возбуждается OSError.
shutil.get_terminal_size() – это высокоуровневая функция, которую обычно следует использовать, а os.get_terminal_size – низкоуровневая реализация.
Доступность: Unix, Windows.
16.1.5. Файлы и каталоги¶Files and Directories
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:
указание файлового дескриптора: Для некоторых функций аргумент path может быть не только строкой, задающей имя пути, но и файловым дескриптором. В этом случае функция будет работать с файлом, на который ссылается дескриптор. (В системах POSIX Python вызовет версию функции f....)
Можно проверить, поддерживается ли указание path в качестве файлового дескриптора на вашей платформе, с помощью os.supports_fd. Если это не поддерживается, его использование вызовет NotImplementedError.
Если функция также поддерживает аргументы dir_fd или follow_symlinks, то указывать их вместе с path в виде файлового дескриптора – ошибка.
пути относительно дескрипторов каталогов: Если dir_fd не равен None, это должен быть файловый дескриптор, ссылающийся на каталог, и путь для операции должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь абсолютный, dir_fd игнорируется. (В системах POSIX Python вызовет версию функции ...at или f...at.)
Можно проверить, поддерживается ли dir_fd на вашей платформе, с помощью os.supports_dir_fd. Если это не поддерживается, его использование вызовет NotImplementedError.
не следовать символьным ссылкам: Если follow_symlinks равен False, и последний элемент пути для операции является символьной ссылкой, функция будет работать с самой символьной ссылкой, а не с файлом, на который она указывает. (В системах POSIX Python вызовет версию функции l....)
Можно проверить, поддерживается ли follow_symlinks на вашей платформе, с помощью os.supports_follow_symlinks. Если это не поддерживается, его использование вызовет NotImplementedError.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
Использует реальные UID/GID для проверки доступа к path. Обратите внимание, что большинство операций использует эффективные UID/GID, поэтому данная процедура может использоваться в среде suid/sgid для проверки, имеет ли вызвавший пользователь указанный доступ к path. mode должен быть F_OK для проверки существования path, или это может быть логическое ИЛИ одного или нескольких из R_OK, W_OK и X_OK для проверки прав. Возвращает True, если доступ разрешён, False в противном случае. См. man-страницу Unix access(2) для получения дополнительной информации.
Эта функция поддерживает указание путей относительно дескрипторов каталогов и отказ от следования по символьным ссылкам.
Если effective_ids равно True, access() будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных. effective_ids может не поддерживаться на вашей платформе; можно проверить, доступен ли он, с помощью os.supports_effective_ids. Если это не поддерживается, его использование вызовет NotImplementedError.
Доступность: Unix, Windows.
Примечание
Using access() to check if a user is authorized to e.g. open a file before actually doing so using open() creates a security hole, because the user might exploit the short time interval between checking and opening the file to manipulate it. It’s preferable to use EAFP techniques. For example:
if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
лучше написать так:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
Примечание
Операции ввода-вывода могут завершаться ошибкой, даже если access() показывает, что они должны выполниться успешно, особенно для операций с сетевыми файловыми системами, семантика разрешений которых может выходить за рамки обычной POSIX-модели битов разрешений.
Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.
- os.F_OK¶
- os.R_OK¶
- os.W_OK¶
- os.X_OK¶
Значения для передачи в качестве параметра mode функции access() для проверки существования, читаемости, записи и исполняемости path соответственно.
- os.chdir(path)¶
Изменяет текущий рабочий каталог на path.
Эта функция поддерживает указание файлового дескриптора. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.
Доступность: Unix, Windows.
Новое в версии 3.3: Добавлена поддержка указания path в качестве файлового дескриптора на некоторых платформах.
- os.chflags(path, flags, *, follow_symlinks=True)¶
Устанавливает флаги path в числовое flags. flags может принимать комбинацию (побитовое ИЛИ) следующих значений (как определено в модуле stat):
- stat.UF_NODUMP
- stat.UF_IMMUTABLE
- stat.UF_APPEND
- stat.UF_OPAQUE
- stat.UF_NOUNLINK
- stat.UF_COMPRESSED
- stat.UF_HIDDEN
- stat.SF_ARCHIVED
- stat.SF_IMMUTABLE
- stat.SF_APPEND
- stat.SF_NOUNLINK
- stat.SF_SNAPSHOT
Эта функция поддерживает отказ от следования симлинкам.
Доступность: Unix.
Новое в версии 3.3: Аргумент follow_symlinks.
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
Изменяет режим path на числовой mode. mode может принимать одно из следующих значений (как определено в модуле stat) или их побитовые OR-комбинации:
- stat.S_ISUID
- stat.S_ISGID
- stat.S_ENFMT
- stat.S_ISVTX
- stat.S_IREAD
- stat.S_IWRITE
- stat.S_IEXEC
- stat.S_IRWXU
- stat.S_IRUSR
- stat.S_IWUSR
- stat.S_IXUSR
- stat.S_IRWXG
- stat.S_IRGRP
- stat.S_IWGRP
- stat.S_IXGRP
- stat.S_IRWXO
- stat.S_IROTH
- stat.S_IWOTH
- stat.S_IXOTH
Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Доступность: Unix, Windows.
Примечание
Хотя Windows поддерживает chmod(), с его помощью можно установить только флаг «только для чтения» (через константы stat.S_IWRITE и stat.S_IREAD или соответствующее целочисленное значение). Все остальные биты игнорируются.
Новое в версии 3.3: добавлена возможность указывать path как открытый файловый дескриптор, а также аргументы dir_fd и follow_symlinks.
- os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶
Изменяет идентификаторы владельца и группы path на числовые значения uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1.
Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
См. shutil.chown() – функцию более высокого уровня, принимающую имена в дополнение к числовым идентификаторам.
Доступность: Unix.
Новое в версии 3.3: Добавлена поддержка указания открытого файлового дескриптора для path, а также аргументов dir_fd и follow_symlinks.
- os.chroot(path)¶
Изменяет корневую директорию текущего процесса на path.
Доступность: Unix.
- os.fchdir(fd)¶
Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором fd. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл. Начиная с Python 3.3, это эквивалентно os.chdir(fd).
Доступность: Unix.
- os.getcwd()¶
Возвращает строку, представляющую текущую рабочую директорию.
Доступность: Unix, Windows.
- os.getcwdb()¶
Возвращает байтовую строку, представляющую текущую рабочую директорию.
Доступность: Unix, Windows.
- os.lchflags(path, flags)¶
Устанавливает флаги path в числовое значение flags, как chflags(), но не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно os.chflags(path, flags, follow_symlinks=False).
Доступность: Unix.
- os.lchmod(path, mode)¶
Изменяет режим path на числовое значение mode. Если path является символической ссылкой, это изменяет саму ссылку, а не её цель. См. документацию по chmod() для возможных значений mode. Начиная с Python 3.3, это эквивалентно os.chmod(path, mode, follow_symlinks=False).
Доступность: Unix.
- os.lchown(path, uid, gid)¶
Изменяет владельца и идентификатор группы path на числовые uid и gid. Эта функция не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно os.chown(path, uid, gid, follow_symlinks=False).
Доступность: Unix.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
Создаёт жёсткую ссылку, указывающую на src, с именем dst.
Эта функция поддерживает указание src_dir_fd и/или dst_dir_fd для задания путей относительно дескрипторов каталогов, а также отказ от следования символическим ссылкам.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
Новое в версии 3.3: Добавлены аргументы src_dir_fd, dst_dir_fd и follow_symlinks.
- os.listdir(path='.')¶
Возвращает список, содержащий имена записей в каталоге, заданном параметром path. Список отсортирован произвольным образом и не включает специальные записи '.' и '..', даже если они присутствуют в каталоге.
path может быть как типа str, так и типа bytes. Если path имеет тип bytes, то возвращаемые имена файлов также будут типа bytes; во всех остальных случаях они будут типа str.
Эта функция также может поддерживать указание файлового дескриптора; файловый дескриптор должен ссылаться на каталог.
Примечание
Для кодирования имён файлов типа str в bytes используйте fsencode().
Доступность: Unix, Windows.
Изменено в версии 3.2: Параметр path стал необязательным.
Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для path.
- os.lstat(path, *, dir_fd=None)¶
Выполняет системный вызов lstat() для указанного пути. Похож на stat(), но не переходит по символическим ссылкам. На платформах, не поддерживающих символические ссылки, это псевдоним для stat(). Начиная с Python 3.3, эта функция эквивалентна os.stat(path, dir_fd=dir_fd, follow_symlinks=False).
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd.
- os.mkdir(path, mode=0o777, *, dir_fd=None)¶
Создаёт каталог с именем path и числовым режимом mode.
На некоторых системах mode игнорируется. Там, где он используется, сначала вычитается текущее значение umask. Если каталог уже существует, возбуждается OSError.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Также можно создавать временные каталоги; см. функцию tempfile.mkdtemp() модуля tempfile.
Доступность: Unix, Windows.
Новое в версии 3.3: Аргумент dir_fd.
- os.makedirs(path, mode=0o777, exist_ok=False)¶
Функция рекурсивного создания каталогов. Работает как mkdir(), но создаёт все промежуточные каталоги, необходимые для содержания конечного каталога.
По умолчанию mode равен 0o777 (восьмеричное). На некоторых системах mode игнорируется. Там, где он используется, сначала вычитается текущее значение umask.
Если exist_ok равен False (по умолчанию), возбуждается OSError, если целевой каталог уже существует.
Примечание
makedirs() может запутаться, если создаваемые компоненты пути содержат pardir (например, ".." в системах UNIX).
Эта функция корректно обрабатывает UNC-пути.
Новое в версии 3.2: Параметр exist_ok.
Изменено в версии 3.3.6: До Python 3.3.6, если exist_ok было равно True и каталог существовал, makedirs() всё равно вызывал ошибку, если mode не совпадал с режимом существующего каталога. Поскольку такое поведение невозможно было реализовать безопасно, оно было удалено в Python 3.3.6. См. issue 21082.
- os.mkfifo(path, mode=0o666, *, dir_fd=None)¶
Создаёт FIFO (именованный канал) с именем path и числовым режимом mode. Значение текущего umask сначала вычитается из режима.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют, пока они не будут удалены (например, с помощью os.unlink()). Обычно FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO на чтение, а клиент – на запись. Обратите внимание, что mkfifo() не открывает FIFO – она только создаёт точку встречи.
Доступность: Unix.
Новое в версии 3.3: Аргумент dir_fd.
- os.mknod(filename, mode=0o600, device=0, *, dir_fd=None)¶
Create a filesystem node (file, device special file or named pipe) named filename. mode specifies both the permissions to use and the type of node to be created, being combined (bitwise OR) with one of stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, and stat.S_IFIFO (those constants are available in stat). For stat.S_IFCHR and stat.S_IFBLK, device defines the newly created device special file (probably using os.makedev()), otherwise it is ignored.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Новое в версии 3.3: Аргумент dir_fd.
- os.major(device)¶
Извлекает старший номер устройства из сырого номера устройства (обычно из поля st_dev или st_rdev из stat).
- os.minor(device)¶
Извлекает младший номер устройства из сырого номера устройства (обычно из поля st_dev или st_rdev из stat).
- os.makedev(major, minor)¶
Составляет сырой номер устройства из старшего и младшего номеров устройства.
- os.pathconf(path, name)¶
Возвращает информацию о системной конфигурации для указанного файла. name задаёт значение конфигурации, которое нужно получить; это может быть строка, являющаяся именем определённого системного значения; эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы определяют и дополнительные имена. Имена, известные операционной системе, перечислены в словаре pathconf_names. Для переменных конфигурации, не включённых в этот словарь, также можно передать целое число в name.
Если name – строка и она неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно есть в pathconf_names, возбуждается OSError с кодом ошибки errno.EINVAL.
Эта функция может поддерживать указание файлового дескриптора.
Доступность: Unix.
- os.pathconf_names¶
Словарь, сопоставляющий имена, принимаемые pathconf() и fpathconf(), с целочисленными значениями, определёнными для этих имён операционной системой. Его можно использовать для определения набора имён, известных системе.
Доступность: Unix.
- os.readlink(path, *, dir_fd=None)¶
Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным именем пути; если он относительный, его можно преобразовать в абсолютный с помощью os.path.join(os.path.dirname(path), result).
Если path является строковым объектом, результат тоже будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если path является объектом bytes, результат будет объектом bytes.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Доступность: Unix, Windows
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Новое в версии 3.3: Аргумент dir_fd.
- os.remove(path, *, dir_fd=None)¶
Удаляет файл path. Если path является каталогом, возбуждается OSError. Для удаления каталогов используйте rmdir().
Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
В Windows попытка удалить файл, который используется, приводит к возбуждению исключения; в Unix запись в каталоге удаляется, но память, выделенная файлу, не освобождается, пока исходный файл не перестанет использоваться.
Эта функция идентична unlink().
Доступность: Unix, Windows.
Новое в версии 3.3: Аргумент dir_fd.
- os.removedirs(path)¶
Удаляет каталоги рекурсивно. Работает как rmdir(), за исключением того, что после успешного удаления конечного каталога removedirs() пытается последовательно удалить все родительские каталоги, указанные в path, пока не возникнет ошибка (которая игнорируется, поскольку обычно означает, что родительский каталог не пуст). Например, os.removedirs('foo/bar/baz') сначала удалит каталог 'foo/bar/baz', а затем удалит 'foo/bar' и 'foo', если они пусты. Возбуждается OSError, если конечный каталог не удалось удалить.
- os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Переименовывает файл или каталог src в dst. Если dst является каталогом, будет возбуждено OSError. В Unix, если dst существует и является файлом, он будет молча заменён, если у пользователя есть разрешение. Операция может завершиться неудачей в некоторых разновидностях Unix, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если dst уже существует, будет возбуждено OSError, даже если это файл.
Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для передачи путей, относительных к дескрипторам каталогов.
Если требуется кросс-платформенная перезапись целевого файла, используйте replace().
Доступность: Unix, Windows.
Новое в версии 3.3: Аргументы src_dir_fd и dst_dir_fd.
- os.renames(old, new)¶
Рекурсивная функция переименования каталогов или файлов. Работает как rename(), но сначала пытается создать все промежуточные каталоги, необходимые для правильного нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, удаляются с помощью removedirs().
Примечание
Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Переименовывает файл или каталог src в dst. Если dst является каталогом, возникает исключение OSError. Если dst существует и является файлом, он будет бесшумно заменён при наличии соответствующих прав. Операция может завершиться ошибкой, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).
Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для передачи путей, относительных к дескрипторам каталогов.
Доступность: Unix, Windows.
Новое в версии 3.3.
- os.rmdir(path, *, dir_fd=None)¶
Удаляет каталог path. Работает только если каталог пуст, иначе возникает исключение OSError. Для удаления целых деревьев каталогов можно использовать shutil.rmtree().
Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Доступность: Unix, Windows.
Новое в версии 3.3: Параметр dir_fd.
- os.stat(path, *, dir_fd=None, follow_symlinks=True)¶
Выполняет системный вызов stat(), эквивалентный одноимённой функции, для указанного пути. path может быть задан как строка или как открытый файловый дескриптор. (Обычно эта функция переходит по символическим ссылкам; чтобы получить информацию о самой ссылке, добавьте аргумент follow_symlinks=False или используйте lstat().)
Возвращаемое значение – объект, чьи атрибуты примерно соответствуют полям структуры stat, а именно:
- st_mode – биты защиты,
- st_ino – номер индексного дескриптора,
- st_dev – устройство,
- st_nlink – количество жёстких ссылок,
- st_uid – идентификатор пользователя-владельца,
- st_gid – идентификатор группы-владельца,
- st_size – размер файла в байтах,
- st_atime – время последнего доступа, выраженное в секундах,
- st_mtime – время последнего изменения содержимого, выраженное в секундах,
- st_ctime – зависит от платформы; время последнего изменения метаданных в Unix или время создания в Windows, выраженное в секундах
- st_atime_ns – время последнего доступа, выраженное в наносекундах в виде целого числа,
- st_mtime_ns – время последнего изменения содержимого, выраженное в наносекундах в виде целого числа,
- st_ctime_ns – зависит от платформы; время последнего изменения метаданных в Unix или время создания в Windows, выраженное в наносекундах в виде целого числа
В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:
- st_blocks – количество 512-байтовых блоков, выделенных для файла
- st_blksize – размер блока файловой системы для эффективного ввода-вывода
- st_rdev – тип устройства, если индексный дескриптор относится к устройству
- st_flags – пользовательские флаги для файла
В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):
- st_gen – номер поколения файла
- st_birthtime – время создания файла
В системах Mac OS также могут быть доступны следующие атрибуты:
- st_rsize
- st_creator
- st_type
Примечание
Точное значение и разрешение атрибутов st_atime, st_mtime и st_ctime зависят от операционной системы и файловой системы. Например, в Windows с файловыми системами FAT или FAT32 st_mtime имеет разрешение 2 секунды, а st_atime – всего 1 день. Подробнее см. документацию вашей операционной системы. Аналогично, хотя st_atime_ns, st_mtime_ns и st_ctime_ns всегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, которые её обеспечивают, объект с плавающей запятой, используемый для хранения st_atime, st_mtime и st_ctime, не может сохранить её полностью и поэтому будет слегка неточным. Если нужны точные временные метки, всегда следует использовать st_atime_ns, st_mtime_ns и st_ctime_ns.
Для обратной совместимости возвращаемое значение stat() также доступно в виде кортежа из не менее 10 целых чисел, представляющих наиболее важные (и переносимые) поля структуры stat, в порядке st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. Некоторые реализации могут добавлять дополнительные элементы в конец.
Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Стандартный модуль stat определяет функции и константы, полезные для извлечения информации из структуры stat. (В Windows некоторые поля заполняются фиктивными значениями.)
Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo posix.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Доступность: Unix, Windows.
Новое в версии 3.3: Добавлены аргументы dir_fd и follow_symlinks, позволяющие указывать файловый дескриптор вместо пути, а также члены st_atime_ns, st_mtime_ns и st_ctime_ns.
- os.stat_float_times([newvalue])¶
Определяет, представляет ли stat_result временные метки в виде чисел с плавающей запятой. Если newvalue равен True, последующие вызовы stat() возвращают числа с плавающей запятой; если False – целые числа. Если newvalue опущен, возвращается текущая настройка.
Для совместимости со старыми версиями Python доступ к stat_result в виде кортежа всегда возвращает целые числа.
Python теперь по умолчанию возвращает значения float. Приложения, которые некорректно работают с вещественными временными метками, могут использовать эту функцию для восстановления старого поведения.
Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только секундное разрешение; на таких системах дробная часть всегда будет равна нулю.
Рекомендуется изменять этот параметр только во время запуска программы в модуле __main__; библиотеки никогда не должны изменять этот параметр. Если приложение использует библиотеку, которая некорректно работает при обработке вещественных временных меток, этому приложению следует отключить эту возможность до тех пор, пока библиотека не будет исправлена.
Устарело с версии 3.3.
- os.statvfs(path)¶
Выполняет системный вызов statvfs() для заданного пути. Возвращаемое значение – объект, атрибуты которого описывают файловую систему по указанному пути и соответствуют членам структуры statvfs, а именно: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax.
Для битовых флагов атрибута f_flag определены две константы уровня модуля: если установлен флаг ST_RDONLY, файловая система смонтирована только для чтения, а если установлен ST_NOSUID, семантика битов setuid/setgid отключена или не поддерживается.
Эта функция может поддерживать указание файлового дескриптора.
Изменено в версии 3.2: Добавлены константы ST_RDONLY и ST_NOSUID.
Доступность: Unix.
Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для path.
- os.supports_dir_fd¶
Объект Set, указывающий, какие функции модуля os допускают использование параметра dir_fd. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие dir_fd, всегда позволяют указывать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.
Чтобы проверить, допускает ли конкретная функция использование параметра dir_fd, используйте оператор in для supports_dir_fd. Например, следующее выражение определяет, доступен ли локально параметр dir_fd функции os.stat():
os.stat in os.supports_dir_fd
В настоящее время параметры dir_fd работают только на Unix-платформах; ни один из них не работает в Windows.
Новое в версии 3.3.
- os.supports_effective_ids¶
Объект Set, указывающий, какие функции модуля os допускают использование параметра effective_ids для os.access(). Если локальная платформа это поддерживает, в коллекции будет os.access(), иначе она будет пуста.
Чтобы проверить, можно ли использовать параметр effective_ids для os.access(), используйте оператор in с supports_dir_fd, например:
os.access in os.supports_effective_ids
В настоящее время effective_ids работает только на Unix-платформах; он не работает в Windows.
Новое в версии 3.3.
- os.supports_fd¶
Объект Set, указывающий, какие функции модуля os позволяют указывать параметр path в виде открытого файлового дескриптора. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие fd, всегда позволяют указать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.
Чтобы проверить, допускает ли конкретная функция указание открытого файлового дескриптора для своего параметра path, используйте оператор in для supports_fd. Например, следующее выражение определяет, принимает ли os.chdir() открытые файловые дескрипторы при вызове на вашей локальной платформе:
os.chdir in os.supports_fd
Новое в версии 3.3.
- os.supports_follow_symlinks¶
Объект Set, указывающий, какие функции модуля os допускают использование параметра follow_symlinks. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие follow_symlinks, всегда позволяют указывать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.
Чтобы проверить, допускает ли конкретная функция использование параметра follow_symlinks, используйте оператор in для supports_follow_symlinks. Например, следующее выражение определяет, доступен ли локально параметр follow_symlinks функции os.stat():
os.stat in os.supports_follow_symlinks
Новое в версии 3.3.
- os.symlink(source, link_name, target_is_directory=False, *, dir_fd=None)¶
Создаёт символическую ссылку, указывающую на source, с именем link_name.
В Windows символическая ссылка представляет либо файл, либо каталог и не меняет свой тип динамически в зависимости от цели. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если target_is_directory равно True, или как файловая ссылка (по умолчанию). На платформах, отличных от Windows, target_is_directory игнорируется.
Поддержка символических ссылок была введена в Windows 6.0 (Vista). symlink() вызовет NotImplementedError в версиях Windows старше 6.0.
Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Примечание
В Windows для успешного создания символических ссылок требуется привилегия SeCreateSymbolicLinkPrivilege. Эта привилегия обычно не предоставляется обычным пользователям, но доступна учетным записям, которые могут повысить привилегии до уровня администратора. Либо получение этой привилегии, либо запуск приложения от имени администратора – способы успешно создавать символические ссылки.
OSError возникает, когда функция вызывается непривилегированным пользователем.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Новое в версии 3.3: Добавлен аргумент dir_fd, и теперь target_is_directory доступен на платформах, отличных от Windows.
- os.sync()¶
Принудительная запись всех данных на диск.
Доступность: Unix.
Новое в версии 3.3.
- os.truncate(path, length)¶
Усекает файл, соответствующий path, так, чтобы его размер не превышал length байт.
Эта функция может поддерживать указание файлового дескриптора.
Доступность: Unix.
Новое в версии 3.3.
- os.unlink(path, *, dir_fd=None)¶
Удаляет файл path. Эта функция идентична remove(); название unlink является её традиционным именем в Unix. Дополнительную информацию см. в документации к remove().
Доступность: Unix, Windows.
Новое в версии 3.3: Параметр dir_fd.
- os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True)¶
Устанавливает время доступа и изменения файла, указанного в path.
utime() принимает два необязательных параметра: times и ns. Они задают время, устанавливаемое для path, и используются следующим образом:
- Если ns не равен None, он должен быть кортежем из двух элементов вида (atime_ns, mtime_ns), где каждый элемент – int, выражающий наносекунды.
- Если times не равен None, он должен быть кортежем из двух элементов вида (atime, mtime), где каждый элемент – это int или float, выражающий секунды.
- Если и times, и ns равны None, это эквивалентно указанию ns=(atime_ns, mtime_ns), где оба времени соответствуют текущему моменту.
Указывать кортежи одновременно для times и ns – ошибка.
Возможность указать каталог для path зависит от того, реализует ли операционная система каталоги как файлы (например, Windows не реализует). Обратите внимание, что точное время, установленное здесь, может не вернуться при последующем вызове stat() в зависимости от разрешения, с которым ваша операционная система записывает время доступа и модификации; см. stat(). Лучший способ сохранить точное время – использовать поля st_atime_ns и st_mtime_ns из объекта результата os.stat() с параметром ns функции utime.
Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Доступность: Unix, Windows.
Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для path, а также параметров dir_fd, follow_symlinks и ns.
- os.walk(top, topdown=True, onerror=None, followlinks=False)¶
Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге top (включая сам top) он возвращает кортеж из трёх элементов (dirpath, dirnames, filenames).
dirpath – строка, путь к каталогу. dirnames – список имён подкаталогов в dirpath (за исключением '.' и '..'). filenames – список имён файлов, не являющихся каталогами, в dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с top) к файлу или каталогу в dirpath, выполните os.path.join(dirpath, name).
Если необязательный аргумент topdown равен True или не указан, тройка для каталога генерируется до троек для любых его подкаталогов (каталоги обходятся сверху вниз). Если topdown равен False, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх).
Когда topdown равен True, вызывающий код может изменить список dirnames на месте (например, с помощью del или срезного присваивания), и walk() будет рекурсивно обходить только те подкаталоги, чьи имена остались в dirnames; это можно использовать для сокращения поиска, задания определённого порядка обхода или даже для информирования walk() о каталогах, которые вызывающий код создаёт или переименовывает до того, как walk() возобновит работу. Изменение dirnames, когда topdown равен False, неэффективно, потому что в режиме обхода снизу вверх каталоги в dirnames генерируются до того, как генерируется сам dirpath.
По умолчанию ошибки от вызова listdir() игнорируются. Если указан необязательный аргумент onerror, он должен быть функцией; она будет вызвана с одним аргументом, экземпляром OSError. Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибут filename объекта исключения.
По умолчанию walk() не будет спускаться по символическим ссылкам, ведущим к каталогам. Установите followlinks в True, чтобы посещать каталоги, на которые указывают символические ссылки, в системах, поддерживающих их.
Примечание
Имейте в виду, что установка followlinks в True может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. walk() не отслеживает уже посещённые каталоги.
Примечание
Если вы передаёте относительное имя пути, не меняйте текущий рабочий каталог между возобновлениями walk(). walk() никогда не меняет текущий каталог и предполагает, что вызывающий код тоже его не меняет.
В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере обход дерева снизу вверх обязателен: rmdir() не позволяет удалить каталог, пока он не пуст:
# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
- os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶
Эта функция ведёт себя точно так же, как walk(), за исключением того, что возвращает кортеж из четырёх элементов (dirpath, dirnames, filenames, dirfd) и поддерживает dir_fd.
dirpath, dirnames и filenames идентичны выходным данным walk(), а dirfd – это файловый дескриптор, ссылающийся на каталог dirpath.
Эта функция всегда поддерживает пути относительно дескрипторов каталогов и непереход по символическим ссылкам. Однако обратите внимание, что, в отличие от других функций, значение по умолчанию для follow_symlinks в fwalk() равно False.
Примечание
Поскольку fwalk() возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощью dup()), если требуется сохранить их дольше.
В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): print(root, "consumes", end="") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end="") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере важно обходить дерево снизу вверх: rmdir() не позволяет удалить каталог, пока он не пуст:
# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
Доступность: Unix.
Новое в версии 3.3.
16.1.5.1. Расширенные атрибуты Linux¶Linux extended attributes
Новое в версии 3.3.
Все эти функции доступны только в Linux.
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть байтовой строкой или строкой. Если это строка, она кодируется с помощью кодировки файловой системы.
Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
- os.listxattr(path=None, *, follow_symlinks=True)¶
Возвращает список расширенных атрибутов файловой системы для path. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если path равен None, listxattr() будет исследовать текущий каталог.
Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
- os.removexattr(path, attribute, *, follow_symlinks=True)¶
Удаляет расширенный атрибут файловой системы attribute из path. attribute должен быть байтовой строкой или строкой. Если это строка, она кодируется с помощью кодировки файловой системы.
Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
Устанавливает расширенный атрибут файловой системы attribute для path в значение value. attribute должен быть типа bytes или str без встроенных NUL. Если это str, он кодируется с использованием кодировки файловой системы. flags может быть XATTR_REPLACE или XATTR_CREATE. Если XATTR_REPLACE указан, а атрибут не существует, будет вызвано EEXISTS. Если XATTR_CREATE указан, а атрибут уже существует, атрибут не будет создан и будет вызвано ENODATA.
Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Примечание
В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.
- os.XATTR_SIZE_MAX¶
Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.
- os.XATTR_CREATE¶
Это возможное значение для аргумента flags в setxattr(). Оно указывает, что операция должна создать атрибут.
- os.XATTR_REPLACE¶
Это возможное значение для аргумента flags в setxattr(). Оно указывает, что операция должна заменить существующий атрибут.
16.1.6. Управление процессами¶Process Management
Эти функции можно использовать для создания процессов и управления ими.
Различные функции exec* принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый из этих аргументов передается новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это argv[0], передаваемый в main() программы. Например, os.execv('/bin/echo', ['foo', 'bar']) выведет на стандартный вывод только bar; foo будет проигнорирован.
- os.abort()¶
Генерирует сигнал SIGABRT для текущего процесса. В Unix поведение по умолчанию – создание дампа памяти; в Windows процесс немедленно возвращает код возврата 3. Вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный для SIGABRT с помощью signal.signal().
Доступность: Unix, Windows.
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут возбуждаться как исключения OSError.
Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если в этих открытых файлах могут быть буферизированные данные, их следует сбросить с помощью sys.stdout.flush() или os.fsync() перед вызовом функции exec*.
Варианты «l» и «v» функций exec* различаются способом передачи аргументов командной строки. Варианты «l», вероятно, проще всего использовать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций execl*(). Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени запускаемой команды, но это не является строгим требованием.
Варианты, содержащие букву «p» в конце (execlp(), execlpe(), execvp() и execvpe()), будут использовать переменную окружения PATH для поиска программы file. Когда окружение заменяется (с помощью одного из вариантов exec*e, обсуждаемых в следующем абзаце), новое окружение используется как источник переменной PATH. Другие варианты – execl(), execle(), execv() и execve() – не будут использовать переменную PATH для поиска исполняемого файла; path должен содержать подходящий абсолютный или относительный путь.
Для execle(), execlpe(), execve() и execvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции execl(), execlp(), execv() и execvp() заставляют новый процесс наследовать окружение текущего процесса.
Для execve() на некоторых платформах path может быть также задан как открытый файловый дескриптор. Эта функциональность может не поддерживаться на вашей платформе; проверить её доступность можно с помощью os.supports_fd. Если она недоступна, её использование вызовет исключение NotImplementedError.
Доступность: Unix, Windows.
Новое в версии 3.3: Добавлена поддержка указания открытого файлового дескриптора для path для execve().
- os._exit(n)¶
Завершает процесс с кодом n, без вызова обработчиков очистки, сброса буферов stdio и т.д.
Доступность: Unix, Windows.
Следующие коды возврата определены и могут использоваться с _exit(), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.
Примечание
Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.
- os.EX_OK¶
Код завершения, означающий, что ошибок не возникло.
Доступность: Unix.
- os.EX_USAGE¶
Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.
Доступность: Unix.
- os.EX_DATAERR¶
Код завершения, означающий, что входные данные были некорректны.
Доступность: Unix.
- os.EX_NOINPUT¶
Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.
Доступность: Unix.
- os.EX_NOUSER¶
Код завершения, означающий, что указанный пользователь не существовал.
Доступность: Unix.
- os.EX_NOHOST¶
Код завершения, означающий, что указанный хост не существовал.
Доступность: Unix.
- os.EX_UNAVAILABLE¶
Код завершения, означающий, что требуемая служба недоступна.
Доступность: Unix.
- os.EX_SOFTWARE¶
Код завершения, означающий, что обнаружена внутренняя программная ошибка.
Доступность: Unix.
- os.EX_OSERR¶
Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.
Доступность: Unix.
- os.EX_OSFILE¶
Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.
Доступность: Unix.
- os.EX_CANTCREAT¶
Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.
Доступность: Unix.
- os.EX_IOERR¶
Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.
Доступность: Unix.
- os.EX_TEMPFAIL¶
Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.
Доступность: Unix.
- os.EX_PROTOCOL¶
Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.
Доступность: Unix.
- os.EX_NOPERM¶
Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).
Доступность: Unix.
- os.EX_CONFIG¶
Код выхода, указывающий на ошибку конфигурации.
Доступность: Unix.
- os.EX_NOTFOUND¶
Код выхода, означающий нечто вроде «запись не найдена».
Доступность: Unix.
- os.fork()¶
Создаёт дочерний процесс. Возвращает 0 в дочернем процессе и идентификатор дочернего процесса в родительском. Если происходит ошибка, возбуждается OSError.
Обратите внимание, что некоторые платформы, включая FreeBSD <= 6.3, Cygwin и OS/2 EMX, имеют известные проблемы при использовании fork() из потока.
Предупреждение
О приложениях, использующих модуль SSL с fork(), см. ssl.
Доступность: Unix.
- os.forkpty()¶
Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару (pid, fd), где pid равен 0 в дочернем процессе, идентификатору нового дочернего процесса в родительском, а fd – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модуль pty. Если происходит ошибка, возбуждается OSError.
Доступность: некоторые разновидности Unix.
- os.kill(pid, sig)¶
Отправляет сигнал sig процессу pid. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле signal.
Windows: сигналы signal.CTRL_C_EVENT и signal.CTRL_BREAK_EVENT являются особыми – их можно отправлять только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение sig приведет к безусловному завершению процесса через API TerminateProcess, а код возврата будет установлен в sig. Версия kill() для Windows дополнительно принимает дескрипторы процессов, которые нужно завершить.
Смотрите также signal.pthread_kill().
Новое в версии 3.2: Поддержка Windows.
- os.killpg(pgid, sig)¶
Отправить сигнал sig группе процессов pgid.
Доступность: Unix.
- os.nice(increment)¶
Добавить increment к «приоритету» процесса. Возвращает новый приоритет.
Доступность: Unix.
- os.plock(op)¶
Блокирует сегменты программы в памяти. Значение op (определено в <sys/lock.h>) определяет, какие сегменты будут заблокированы.
Доступность: Unix.
- os.popen(...)¶
Запускает дочерние процессы и возвращает открытые каналы для взаимодействия. Эти функции описаны в разделе Создание файловых объектов.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
Выполняет программу path в новом процессе.
(Обратите внимание, что модуль subprocess предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем этих функций. Особенно обратитесь к разделу Замена старых функций модулем subprocess.)
Если mode равен P_NOWAIT, эта функция возвращает идентификатор нового процесса; если mode равен P_WAIT, возвращает код завершения процесса, если он завершился нормально, или -signal, где signal – это сигнал, который убил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией waitpid().
Варианты с буквами «l» и «v» функций семейства spawn* отличаются способом передачи аргументов командной строки. Варианты с «l», пожалуй, самые простые в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций spawnl*(). Варианты с «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.
Варианты, содержащие вторую букву «p» ближе к концу (spawnlp(), spawnlpe(), spawnvp(), spawnvpe()) используют переменную окружения PATH для поиска программы file. Когда окружение заменяется (с использованием одного из вариантов spawn*e, рассмотренных в следующем абзаце), новое окружение используется в качестве источника переменной PATH. Другие варианты: spawnl(), spawnle(), spawnv(), spawnve() – не используют переменную PATH для поиска исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.
Для spawnle(), spawnlpe(), spawnve(), spawnvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением (mapping), которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции spawnl(), spawnlp(), spawnv(), spawnvp() заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками; недопустимые ключи или значения приведут к ошибке функции, с возвращаемым значением 127.
В качестве примера следующие вызовы spawnlp() и spawnvpe() эквивалентны:
import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Доступность: Unix, Windows. spawnlp(), spawnlpe(), spawnvp() и spawnvpe() недоступны в Windows. spawnle() и spawnve() не являются потокобезопасными в Windows; рекомендуется использовать модуль subprocess.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
Возможные значения для параметра mode функций семейства spawn*. Если указано любое из этих значений, функции spawn*() возвращаются сразу после создания нового процесса, возвращая идентификатор нового процесса в качестве значения.
Доступность: Unix, Windows.
- os.P_WAIT¶
Возможное значение для параметра mode функций семейства spawn*. Если указано mode, функции spawn*() не возвращаются до завершения выполнения нового процесса и возвращают код завершения процесса, если выполнение успешно, или -signal, если сигнал убивает процесс.
Доступность: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
Возможные значения для параметра mode функций семейства spawn*. Они менее переносимы, чем перечисленные выше. P_DETACH аналогичен P_NOWAIT, но новый процесс отсоединяется от консоли вызывающего процесса. Если используется P_OVERLAY, текущий процесс будет заменен; функция spawn* не вернет управление.
Доступность: Windows.
- os.startfile(path[, operation])¶
Запускает файл в связанном с ним приложении.
Если operation не указан или равен 'open', это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде start из интерактивной командной оболочки: файл открывается приложением (если оно есть), связанным с его расширением.
Если указано другое значение operation, оно должно быть «командным глаголом» (command verb), определяющим, что следует сделать с файлом. Распространённые глаголы, документированные Microsoft: 'print' и 'edit' (используются для файлов), а также 'explore' и 'find' (используются для каталогов).
startfile() возвращает управление сразу после запуска связанного приложения. Нет возможности дождаться закрытия приложения или получить его код завершения. Параметр path задаётся относительно текущего каталога. Если требуется использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'); в этом случае базовая функция Win32 ShellExecute() не работает. Используйте функцию os.path.normpath(), чтобы гарантировать правильную кодировку пути для Win32.
Доступность: Windows.
- os.system(command)¶
Выполняет команду (строку) в подчиненной оболочке (subshell). Реализовано вызовом стандартной функции C system() и имеет те же ограничения. Изменения sys.stdin и т.п. не отражаются в окружении выполняемой команды. Если command генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора.
В Unix возвращаемое значение – это код завершения процесса, закодированный в формате, указанном для wait(). Обратите внимание, что POSIX не определяет значение возвращаемого значения функции C system(), поэтому возвращаемое значение функции Python зависит от системы.
В Windows возвращаемое значение – это то, что возвращает системная оболочка после выполнения command. Оболочка задается переменной окружения Windows COMSPEC; обычно это cmd.exe, которая возвращает код завершения выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.
Модуль subprocess предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее использования этой функции. Смотрите раздел Замена старых функций модулем subprocess в документации модуля subprocess для полезных примеров.
Доступность: Unix, Windows.
- os.times()¶
Возвращает текущие глобальные времена процесса. Возвращаемое значение – объект с пятью атрибутами:
- user – пользовательское время
- system – системное время
- children_user – пользовательское время всех дочерних процессов
- children_system – системное время всех дочерних процессов
- elapsed – реальное время, прошедшее с фиксированной точки в прошлом
Для обратной совместимости этот объект также ведёт себя как кортеж из пяти элементов, содержащий user, system, children_user, children_system и elapsed в указанном порядке.
Смотрите страницу руководства Unix times(2) или соответствующую документацию Windows Platform API. В Windows известны только user и system; остальные атрибуты равны нулю. В OS/2 известен только elapsed; остальные атрибуты равны нулю.
Доступность: Unix, Windows.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.
- os.wait()¶
Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.
Доступность: Unix.
- os.waitid(idtype, id, options)¶
Ожидает завершения одного или нескольких дочерних процессов. idtype может быть P_PID, P_PGID или P_ALL. id задаёт идентификатор процесса для ожидания. options формируется с помощью побитового ИЛИ одной или нескольких из WEXITED, WSTOPPED или WCONTINUED и дополнительно может быть объединён с WNOHANG или WNOWAIT. Возвращаемое значение – объект, представляющий данные, содержащиеся в структуре siginfo_t, а именно: si_pid, si_uid, si_signo, si_status, si_code или None, если указан WNOHANG и нет дочерних процессов, готовых к ожиданию.
Доступность: Unix.
Новое в версии 3.3.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
Это возможные значения для idtype в waitid(). Они влияют на то, как интерпретируется id.
Доступность: Unix.
Новое в версии 3.3.
- os.WEXITED¶
- os.WSTOPPED¶
- os.WNOWAIT¶
Флаги, которые можно использовать в options в waitid() и которые указывают, какой сигнал дочернего процесса ожидать.
Доступность: Unix.
Новое в версии 3.3.
- os.CLD_EXITED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_CONTINUED¶
Это возможные значения для si_code в результате, возвращаемом waitid().
Доступность: Unix.
Новое в версии 3.3.
- os.waitpid(pid, options)¶
Подробности этой функции различаются в Unix и Windows.
В Unix: ожидает завершения дочернего процесса с идентификатором pid и возвращает кортеж, содержащий его идентификатор и код завершения (закодирован так же, как для wait()). Семантика вызова зависит от значения целочисленного options, которое должно быть 0 для обычного режима.
Если pid больше 0, waitpid() запрашивает информацию о состоянии для этого конкретного процесса. Если pid равен 0, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если pid равен -1, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше -1, состояние запрашивается для любого процесса в группе процессов -pid (абсолютное значение pid).
Исключение OSError возбуждается со значением errno, когда системный вызов возвращает -1.
В Windows: ожидает завершения процесса, заданного дескриптором процесса pid, и возвращает кортеж, содержащий pid и его код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). pid, меньше или равный 0, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного options не учитывается. pid может ссылаться на любой процесс, чей идентификатор известен, не обязательно дочерний. Функции spawn*, вызванные с P_NOWAIT, возвращают подходящие дескрипторы процессов.
- os.wait3(options)¶
Аналогично waitpid(), за исключением того, что аргумент с идентификатором процесса не передаётся, а возвращается кортеж из трёх элементов: идентификатор дочернего процесса, код завершения и информация об использовании ресурсов. Подробнее об информации об использовании ресурсов см. resource.getrusage(). Аргумент опций – тот же, что передаётся в waitpid() и wait4().
Доступность: Unix.
- os.wait4(pid, options)¶
Аналогично waitpid(), за исключением того, что возвращается кортеж из трёх элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. resource.getrusage(). Аргументы wait4() те же, что передаются в waitpid().
Доступность: Unix.
- os.WNOHANG¶
Опция waitpid() для немедленного возврата, если статус дочернего процесса недоступен сразу. В этом случае функция возвращает (0, 0).
Доступность: Unix.
- os.WCONTINUED¶
Эта опция позволяет сообщать о дочерних процессах, если они были возобновлены после остановки управления заданием с момента последнего сообщения их статуса.
Доступность: некоторые системы Unix.
- os.WUNTRACED¶
Этот параметр заставляет сообщать о дочерних процессах, если они были остановлены, но их текущее состояние ещё не было сообщено с момента остановки.
Доступность: Unix.
Следующие функции принимают код статуса процесса, возвращаемый system(), wait() или waitpid() в качестве параметра. Они могут использоваться для определения состояния процесса.
- os.WCOREDUMP(status)¶
Возвращает True, если для процесса был сгенерирован дамп ядра, иначе возвращает False.
Доступность: Unix.
- os.WIFCONTINUED(status)¶
Возвращает True, если процесс был возобновлён после остановки управления заданиями, иначе возвращает False.
Доступность: Unix.
- os.WIFSTOPPED(status)¶
Возвращает True, если процесс был остановлен, иначе возвращает False.
Доступность: Unix.
- os.WIFSIGNALED(status)¶
Возвращает True, если процесс завершился из-за сигнала, иначе возвращает False.
Доступность: Unix.
- os.WIFEXITED(status)¶
Возвращает True, если процесс завершился с помощью системного вызова exit(2), иначе возвращает False.
Доступность: Unix.
- os.WEXITSTATUS(status)¶
Если WIFEXITED(status) истинно, возвращает целочисленный параметр системного вызова exit(2). В противном случае возвращаемое значение не имеет смысла.
Доступность: Unix.
- os.WSTOPSIG(status)¶
Возвращает сигнал, который вызвал остановку процесса.
Доступность: Unix.
- os.WTERMSIG(status)¶
Возвращает сигнал, который вызвал завершение процесса.
Доступность: Unix.
16.1.7. Интерфейс планировщика¶Interface to the scheduler
Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.
Новое в версии 3.3.
Следующие политики планирования доступны, если они поддерживаются операционной системой.
- os.SCHED_OTHER¶
Политика планирования по умолчанию.
- os.SCHED_BATCH¶
Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.
- os.SCHED_IDLE¶
Политика планирования для фоновых задач с очень низким приоритетом.
- os.SCHED_SPORADIC¶
Политика планирования для спорадических серверных программ.
- os.SCHED_FIFO¶
Политика планирования «первым пришёл, первым обслужен».
- os.SCHED_RR¶
Циклическая политика планирования.
- os.SCHED_RESET_ON_FORK¶
Этот флаг можно объединить по ИЛИ с любой другой политикой планирования. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет потомка сбрасываются на значения по умолчанию.
- class os.sched_param(sched_priority)¶
Этот класс представляет настраиваемые параметры планирования, используемые в sched_setparam(), sched_setscheduler() и sched_getparam(). Он неизменяем.
В настоящее время существует только один возможный параметр:
- sched_priority¶
Приоритет планирования для политики планирования.
- os.sched_get_priority_min(policy)¶
Возвращает минимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
- os.sched_get_priority_max(policy)¶
Возвращает максимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
- os.sched_setscheduler(pid, policy, param)¶
Устанавливает политику планирования для процесса с PID pid. Значение pid, равное 0, означает tекущий процесс. policy – одна из констант политик планирования, перечисленных выше. param – экземпляр sched_param.
- os.sched_getscheduler(pid)¶
Возвращает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.
- os.sched_setparam(pid, param)¶
Устанавливает параметры планирования для процесса с PID pid. Значение pid, равное 0, означает tекущий процесс. param – экземпляр sched_param.
- os.sched_getparam(pid)¶
Возвращает параметры планирования в виде экземпляра sched_param для процесса с PID pid. Значение pid, равное 0, означает текущий процесс.
- os.sched_rr_get_interval(pid)¶
Возвращает квант времени (round-robin) в секундах для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
- os.sched_yield()¶
Добровольно освобождает процессор.
- os.sched_setaffinity(pid, mask)¶
Ограничивает процесс с PID pid (или текущий процесс, если ноль) набором процессоров. Параметр mask – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.
- os.sched_getaffinity(pid)¶
Возвращает набор процессоров, к которым ограничен процесс с PID pid (или текущий процесс, если ноль).
См. также
multiprocessing.cpu_count() возвращает количество процессоров в системе.
16.1.8. Разная системная информация¶Miscellaneous System Information
- os.confstr(name)¶
Возвращает строковые значения системных конфигураций. name задаёт значение конфигурации для получения; это может быть строка – имя определённого системного значения; эти имена указаны в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы определяют также дополнительные имена. Имена, известные операционной системе, представлены как ключи словаря confstr_names. Для переменных конфигурации, не включённых в это соответствие, также допускается передача целого числа в качестве name.
Если значение конфигурации, указанное name, не определено, возвращается None.
Если name – строка и неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается системой, даже если оно включено в confstr_names, возбуждается OSError с errno.EINVAL в качестве кода ошибки.
Доступность: Unix.
- os.confstr_names¶
Словарь, сопоставляющий имена, принимаемые confstr(), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе.
Доступность: Unix.
- os.getloadavg()¶
Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает OSError, если среднюю нагрузку не удалось получить.
Доступность: Unix.
- os.sysconf(name)¶
Возвращает целочисленные значения системных конфигураций. Если значение конфигурации, указанное name, не определено, возвращается -1. Замечания относительно параметра name для confstr() применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся sysconf_names.
Доступность: Unix.
- os.sysconf_names¶
Словарь, сопоставляющий имена, принимаемые sysconf(), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе.
Доступность: Unix.
Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.
Операции более высокого уровня над путями определены в модуле os.path.
- os.curdir¶
Строковая константа, используемая операционной системой для обозначения текущего каталога. Это '.' для Windows и POSIX. Также доступна через os.path.
- os.pardir¶
Строковая константа, используемая операционной системой для обозначения родительского каталога. Это '..' для Windows и POSIX. Также доступна через os.path.
- os.sep¶
Символ, используемый операционной системой для разделения компонентов пути. Это '/' для POSIX и '\\' для Windows. Обратите внимание, что знания этого недостаточно для разбора или объединения путей – используйте os.path.split() и os.path.join(), однако это бывает полезно. Также доступен через os.path.
- os.altsep¶
Альтернативный символ, используемый операционной системой для разделения компонентов пути, или None, если существует только один разделитель. Устанавливается в '/' в Windows, где sep является обратной косой чертой. Также доступен через os.path.
- os.extsep¶
Символ, отделяющий основное имя файла от расширения; например, '.' в os.py. Также доступен через os.path.
- os.pathsep¶
Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в PATH), например ':' для POSIX или ';' для Windows. Также доступен через os.path.
- os.defpath¶
Путь поиска по умолчанию, используемый exec*p* и spawn*p*, если в окружении нет ключа 'PATH'. Также доступен через os.path.
- os.linesep¶
Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например '\\n' для POSIX, или несколько символов, например '\\r\\n' для Windows. Не используйте os.linesep в качестве завершителя строк при записи в файлы, открытые в текстовом режиме (режим по умолчанию); вместо этого используйте одиночный '\\n' на всех платформах.
16.1.9. Разные функции¶Miscellaneous Functions
- os.urandom(n)¶
Возвращает строку из n случайных байтов, пригодных для криптографического использования.
Эта функция возвращает случайные байты из источника случайности, зависящего от ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В Unix-подобных системах она обращается к /dev/urandom, а в Windows использует CryptGenRandom(). Если источник случайности не найден, возбуждается NotImplementedError.
Для удобного интерфейса к генератору случайных чисел, предоставляемому вашей платформой, смотрите random.SystemRandom.