os — Miscellaneous operating system interfaces

Вихідний код: Lib/os.py


Цей модуль забезпечує портативний спосіб використання залежних від операційної системи функцій. Якщо ви хочете просто прочитати або записати файл, дивіться open(), якщо ви хочете маніпулювати шляхами, перегляньте модуль os.path, а якщо ви хочете прочитати всі рядки в усіх файлах у командному рядку перегляньте модуль fileinput. Для створення тимчасових файлів і каталогів перегляньте модуль tempfile, а для високорівневої обробки файлів і каталогів дивіться модуль shutil.

Примітки щодо доступності цих функцій:

  • Конструкція всіх вбудованих залежних від операційної системи модулів Python така, що, поки доступна та сама функціональність, він використовує той самий інтерфейс; наприклад, функція os.stat(path) повертає статистичну інформацію про path у тому самому форматі (який, як виявилося, походить з інтерфейсу POSIX).

  • Розширення, властиві певній операційній системі, також доступні через модуль os, але їх використання, звичайно, є загрозою для переносимості.

  • Усі функції, які приймають імена шляхів або файлів, приймають як байти, так і рядкові об’єкти, і в результаті повертають об’єкт того самого типу, якщо повертається шлях або ім’я файлу.

  • On VxWorks, os.fork, os.execv and os.spawn*p* are not supported.

Примітка

Усі функції в цьому модулі викликають OSError (або його підкласи) у разі недійсних або недоступних імен файлів і шляхів або інших аргументів, які мають правильний тип, але не приймаються операційною системою.

exception os.error

Псевдонім для вбудованого винятку OSError.

os.name

Назва імпортованого модуля, залежного від операційної системи. Наразі зареєстровано такі назви: 'posix', 'nt', 'java'.

Дивись також

sys.platform has a finer granularity. os.uname() gives system-dependent version information.

Модуль platform забезпечує детальну перевірку ідентичності системи.

Імена файлів, аргументи командного рядка та змінні середовища

In Python, file names, command line arguments, and environment variables are represented using the string type. On some systems, decoding these strings to and from bytes is necessary before passing them to the operating system. Python uses the file system encoding to perform this conversion (see sys.getfilesystemencoding()).

Змінено в версії 3.1: On some systems, conversion using the file system encoding may fail. In this case, Python uses the surrogateescape encoding error handler, which means that undecodable bytes are replaced by a Unicode character U+DCxx on decoding, and these are again translated to the original byte on encoding.

The file system encoding must guarantee to successfully decode all bytes below 128. If the file system encoding fails to provide this guarantee, API functions may raise UnicodeErrors.

Параметри процесу

Ці функції та елементи даних надають інформацію та діють щодо поточного процесу та користувача.

os.ctermid()

Повертає ім’я файлу, що відповідає керуючому терміналу процесу.

Наявність: Unix.

os.environ

Об’єкт mapping, де ключі та значення є рядками, які представляють середовище процесу. Наприклад, environ['HOME'] є шляхом до вашого домашнього каталогу (на деяких платформах) і еквівалентний getenv("HOME") в C.

Це зіставлення фіксується під час першого імпорту модуля os, зазвичай під час запуску Python як частина обробки site.py. Зміни в середовищі, внесені після цього часу, не відображаються в os.environ, за винятком змін, внесених безпосередньо шляхом модифікації os.environ.

Це відображення можна використовувати для зміни середовища, а також запиту середовища. putenv() буде викликано автоматично, коли відображення буде змінено.

В Unix ключі та значення використовують sys.getfilesystemencoding() і 'surrogateescape' обробник помилок. Використовуйте environb, якщо ви хочете використати інше кодування.

Примітка

Безпосередній виклик putenv() не змінює os.environ, тому краще змінити os.environ.

Примітка

On some platforms, including FreeBSD and macOS, setting environ may cause memory leaks. Refer to the system documentation for putenv().

Ви можете видалити елементи в цьому відображенні, щоб скасувати налаштування змінних середовища. unsetenv() буде викликано автоматично, коли елемент буде видалено з os.environ, а також під час виклику одного з методів pop() або clear().

Змінено в версії 3.9: Оновлено для підтримки операторів злиття (|) і оновлення (|=) PEP 584.

os.environb

Байтова версія environ: об’єкт mapping, де і ключі, і значення є об’єктами bytes, що представляють середовище процесу. environ і environb синхронізуються (модифікація environb оновлює environ, і навпаки).

environb is only available if supports_bytes_environ is True.

Нове в версії 3.2.

Змінено в версії 3.9: Оновлено для підтримки операторів злиття (|) і оновлення (|=) PEP 584.

os.chdir(path)
os.fchdir(fd)
os.getcwd()

Ці функції описані в Файли та каталоги.

os.fsencode(filename)

Encode path-like filename to the filesystem encoding with 'surrogateescape' error handler, or 'strict' on Windows; return bytes unchanged.

fsdecode() є зворотною функцією.

Нове в версії 3.2.

Змінено в версії 3.6: Додано підтримку прийому об’єктів, що реалізують інтерфейс os.PathLike.

os.fsdecode(filename)

Decode the path-like filename from the filesystem encoding with 'surrogateescape' error handler, or 'strict' on Windows; return str unchanged.

fsencode() є зворотною функцією.

Нове в версії 3.2.

Змінено в версії 3.6: Додано підтримку прийому об’єктів, що реалізують інтерфейс os.PathLike.

os.fspath(path)

Повертає представлення файлової системи шляху.

Якщо передано str або bytes, воно повертається без змін. В іншому випадку викликається __fspath__() і повертається його значення, якщо це об’єкт str або bytes. У всіх інших випадках виникає TypeError.

Нове в версії 3.6.

class os.PathLike

abstract base class для об’єктів, що представляють шлях файлової системи, напр. pathlib.PurePath.

Нове в версії 3.6.

abstractmethod __fspath__()

Повертає представлення шляху файлової системи до об’єкта.

Метод має повертати лише об’єкт str або bytes, з перевагою для str.

os.getenv(key, default=None)

Return the value of the environment variable key if it exists, or default if it doesn’t. key, default and the result are str. Note that since getenv() uses os.environ, the mapping of getenv() is similarly also captured on import, and the function may not reflect future environment changes.

В Unix ключі та значення декодуються за допомогою sys.getfilesystemencoding() і 'surrogateescape' обробника помилок. Використовуйте os.getenvb(), якщо ви хочете використати інше кодування.

Availability: most flavors of Unix, Windows.

os.getenvb(key, default=None)

Return the value of the environment variable key if it exists, or default if it doesn’t. key, default and the result are bytes. Note that since getenvb() uses os.environb, the mapping of getenvb() is similarly also captured on import, and the function may not reflect future environment changes.

getenvb() is only available if supports_bytes_environ is True.

Availability: most flavors of Unix.

Нове в версії 3.2.

os.get_exec_path(env=None)

Повертає список каталогів, у яких здійснюватиметься пошук іменованого виконуваного файлу, схожого на оболонку, під час запуску процесу. env, якщо вказано, має бути словником змінної середовища для пошуку ШЛЯХУ. За умовчанням, коли env має значення None, використовується environ.

Нове в версії 3.2.

os.getegid()

Повертає ефективний ідентифікатор групи поточного процесу. Це відповідає біту «set id» у файлі, який виконується в поточному процесі.

Наявність: Unix.

os.geteuid()

Повернути ефективний ідентифікатор користувача поточного процесу.

Наявність: Unix.

os.getgid()

Повертає справжній ідентифікатор групи поточного процесу.

Наявність: Unix.

os.getgrouplist(user, group)

Return list of group ids that user belongs to. If group is not in the list, it is included; typically, group is specified as the group ID field from the password record for user, because that group ID will otherwise be potentially omitted.

Наявність: Unix.

Нове в версії 3.3.

os.getgroups()

Повернути список ідентифікаторів додаткових груп, пов’язаних із поточним процесом.

Наявність: Unix.

Примітка

On macOS, getgroups() behavior differs somewhat from other Unix platforms. If the Python interpreter was built with a deployment target of 10.5 or earlier, getgroups() returns the list of effective group ids associated with the current user process; this list is limited to a system-defined number of entries, typically 16, and may be modified by calls to setgroups() if suitably privileged. If built with a deployment target greater than 10.5, getgroups() returns the current group access list for the user associated with the effective user id of the process; the group access list may change over the lifetime of the process, it is not affected by calls to setgroups(), and its length is not limited to 16. The deployment target value, MACOSX_DEPLOYMENT_TARGET, can be obtained with sysconfig.get_config_var().

os.getlogin()

Повертає ім’я користувача, який увійшов у систему на керуючому терміналі процесу. Для більшості цілей корисніше використовувати getpass.getuser(), оскільки останній перевіряє змінні середовища LOGNAME або USERNAME, щоб дізнатися, хто є користувачем, і повертається до pwd.getpwuid(os.getuid())[0], щоб отримати ім’я для входу поточного реального ідентифікатора користувача.

Наявність: Unix, Windows.

os.getpgid(pid)

Повертає ідентифікатор групи процесу з ідентифікатором процесу pid. Якщо pid дорівнює 0, повертається ідентифікатор групи поточного процесу.

Наявність: Unix.

os.getpgrp()

Повертає ідентифікатор поточної групи процесів.

Наявність: Unix.

os.getpid()

Повернути ідентифікатор поточного процесу.

os.getppid()

Повертає ідентифікатор батьківського процесу. Коли батьківський процес завершив роботу, в Unix повертається ідентифікатор процесу ініціалізації (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 на рядкове значення. Такі зміни в середовищі впливають на підпроцеси, запущені з os.system(), popen() або fork() і execv().

Призначення елементів у os.environ автоматично перетворюються на відповідні виклики putenv(); однак виклики putenv() не оновлюють os.environ, тому насправді краще призначати елементам os.environ. Це також стосується getenv() і getenvb(), які відповідно використовують os.environ і os.environb у своїх реалізаціях.

Примітка

On some platforms, including FreeBSD and macOS, setting environ may cause memory leaks. Refer to the system documentation for putenv().

Викликає подію аудиту os.putenv з аргументами key, value.

Змінено в версії 3.9: Тепер функція доступна завжди.

os.setegid(egid)

Установіть ефективний ідентифікатор групи поточного процесу.

Наявність: Unix.

os.seteuid(euid)

Встановити ефективний ідентифікатор користувача поточного процесу.

Наявність: Unix.

os.setgid(gid)

Встановіть ідентифікатор групи поточного процесу.

Наявність: Unix.

os.setgroups(groups)

Установіть для списку ідентифікаторів додаткових груп, пов’язаних із поточним процесом, значення groups. групи мають бути послідовністю, а кожен елемент має бути цілим числом, що ідентифікує групу. Зазвичай ця операція доступна лише суперкористувачу.

Наявність: Unix.

Примітка

У macOS довжина groups не може перевищувати визначену системою максимальну кількість ефективних ідентифікаторів груп, як правило, 16. Перегляньте документацію для getgroups(), щоб дізнатися про випадки, коли він може не повернути той самий список груп, встановлений за допомогою виклику setgroups().

os.setpgrp()

Call the system call setpgrp() or setpgrp(0, 0) depending on which version is implemented (if any). See the Unix manual for the semantics.

Наявність: Unix.

os.setpgid(pid, pgrp)

Call the system call setpgid() to set the process group id of the process with id pid to the process group with id pgrp. See the Unix manual for the semantics.

Наявність: Unix.

os.setpriority(which, who, priority)

Встановити пріоритет планування програми. Значення which є одним із PRIO_PROCESS, PRIO_PGRP або PRIO_USER і who інтерпретується відносно which (ідентифікатор процесу для PRIO_PROCESS, ідентифікатор групи процесів для PRIO_PGRP та ідентифікатор користувача для PRIO_USER). Нульове значення для who позначає (відповідно) викликаючий процес, групу процесів викликаючого процесу або справжній ідентифікатор користувача викликаючого процесу. пріоритет — це значення в діапазоні від -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)

Call the system call getsid(). See the Unix manual for the semantics.

Наявність: Unix.

os.setsid()

Call the system call setsid(). See the Unix manual for the semantics.

Наявність: Unix.

os.setuid(uid)

Встановіть ідентифікатор користувача поточного процесу.

Наявність: Unix.

os.strerror(code)

Return the error message corresponding to the error code in code. On platforms where strerror() returns NULL when given an unknown error number, ValueError is raised.

os.supports_bytes_environ

True, якщо рідний тип ОС середовища - байти (наприклад, False у Windows).

Нове в версії 3.2.

os.umask(mask)

Установіть поточну цифрову umask і поверніть попередню umask.

os.uname()

Повертає інформацію про поточну операційну систему. Значення, що повертається, є об’єктом із п’ятьма атрибутами:

  • sysname - назва операційної системи

  • nodename - ім’я машини в мережі (визначено реалізацією)

  • release - випуск операційної системи

  • version - версія операційної системи

  • machine - ідентифікатор обладнання

Для зворотної сумісності цей об’єкт також можна ітерувати, ведучи себе як п’ять кортежів, що містять sysname, nodename, release, version і machine в такому порядку.

Деякі системи скорочують nodename до 8 символів або до початкового компонента; кращий спосіб отримати ім’я хоста – socket.gethostname() або навіть socket.gethostbyaddr(socket.gethostname()).

Availability: recent flavors of Unix.

Змінено в версії 3.3: Тип повернення змінено з кортежу на кортежний об’єкт з іменованими атрибутами.

os.unsetenv(key)

Скасувати (видалити) змінну середовища з назвою key. Такі зміни в середовищі впливають на підпроцеси, запущені з os.system(), popen() або fork() і execv().

Видалення елементів у os.environ автоматично перетворюється на відповідний виклик unsetenv(); однак виклики unsetenv() не оновлюють os.environ, тому насправді краще видалити елементи os.environ.

Викликає подію аудиту os.unsetenv з аргументом key.

Змінено в версії 3.9: Функція тепер доступна завжди і також доступна в Windows.

Створення файлового об’єкта

Ці функції створюють нові файлові об’єкти. (Див. також open() для відкриття дескрипторів файлів.)

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

Повертає відкритий файловий об’єкт, підключений до файлового дескриптора fd. Це псевдонім вбудованої функції open() і приймає ті самі аргументи. Єдина відмінність полягає в тому, що перший аргумент fdopen() завжди має бути цілим числом.

Операції файлового дескриптора

Ці функції працюють із потоками введення/виведення, на які посилаються за допомогою файлових дескрипторів.

Дескриптори файлів — це малі цілі числа, що відповідають файлу, відкритому поточним процесом. Наприклад, стандартним введенням зазвичай є дескриптор файлу 0, стандартним виводом є 1, а стандартною помилкою є 2. Іншим файлам, відкритим процесом, буде присвоєно 3, 4, 5 і так далі. Назва «файловий дескриптор» трохи оманлива; на платформах Unix на сокети та канали також посилаються дескриптори файлів.

Метод fileno() можна використовувати для отримання дескриптора файлу, пов’язаного з file object, коли це необхідно. Зауважте, що використання безпосередньо файлового дескриптора обійде методи файлового об’єкта, ігноруючи такі аспекти, як внутрішня буферизація даних.

os.close(fd)

Закрити файловий дескриптор fd.

Примітка

Ця функція призначена для низькорівневого вводу-виводу та має застосовуватися до дескриптора файлу, який повертає os.open() або pipe(). Щоб закрити «файловий об’єкт», повернутий вбудованою функцією open() або popen() або fdopen(), скористайтеся його методом close() .

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
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

Copy count bytes from file descriptor src, starting from offset offset_src, to file descriptor dst, starting from offset offset_dst. If offset_src is None, then src is read from the current position; respectively for offset_dst. The files pointed by src and dst must reside in the same filesystem, otherwise an OSError is raised with errno set to errno.EXDEV.

Ця копія виконується без додаткових витрат на передачу даних із ядра в простір користувача, а потім назад у ядро. Крім того, деякі файлові системи можуть реалізувати додаткові оптимізації. Копіювання виконується так, ніби обидва файли відкриваються як двійкові.

Поверненим значенням є кількість скопійованих байтів. Це може бути менше запитаної суми.

Availability: Linux kernel >= 4.5 or glibc >= 2.27.

Нове в версії 3.8.

os.device_encoding(fd)

Повертає рядок, що описує кодування пристрою, пов’язаного з fd, якщо він підключений до терміналу; інакше повертає None.

os.dup(fd)

Повертає дублікат файлового дескриптора fd. Новий файловий дескриптор не успадковується.

У Windows під час дублювання стандартного потоку (0: stdin, 1: stdout, 2: stderr) новий дескриптор файлу є inheritable.

Змінено в версії 3.4: Новий файловий дескриптор тепер не успадковується.

os.dup2(fd, fd2, inheritable=True)

Дублюйте файловий дескриптор fd до fd2, закриваючи останній, якщо необхідно. Повернути fd2. Новий файловий дескриптор inheritable за замовчуванням або не успадковується, якщо inheritable має значення False.

Змінено в версії 3.4: Додайте необов’язковий параметр inheritable.

Змінено в версії 3.7: Повернути fd2 у разі успіху. Раніше завжди повертався None.

os.fchmod(fd, mode)

Змініть режим файлу, заданий fd, на числовий режим. Перегляньте документацію для chmod(), щоб дізнатися про можливі значення mode. Починаючи з Python 3.3, це еквівалентно os.chmod(fd, mode).

Викликає подію аудиту os.chmod з аргументами path, mode, dir_fd.

Наявність: Unix.

os.fchown(fd, uid, gid)

Змініть ідентифікатор власника та групи файлу, наданий fd, на числові uid і gid. Щоб залишити один із ідентифікаторів без змін, встановіть для нього значення -1. Дивіться chown(). Починаючи з Python 3.3, це еквівалентно os.chown(fd, uid, gid).

Викликає подію аудиту os.chown з аргументами path, uid, gid, dir_fd.

Наявність: 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_result.

Починаючи з Python 3.3, це еквівалентно os.stat(fd).

Дивись також

Функція stat().

os.fstatvfs(fd)

Повертає інформацію про файлову систему, яка містить файл, пов’язаний із файловим дескриптором fd, наприклад statvfs(). Починаючи з Python 3.3, це еквівалентно os.statvfs(fd).

Наявність: Unix.

os.fsync(fd)

Force write of file with filedescriptor fd to disk. On Unix, this calls the native fsync() function; on Windows, the MS _commit() function.

Якщо ви починаєте з буферизованого file object Python f, спочатку виконайте f.flush(), а потім виконайте os.fsync(f.fileno()), щоб переконатися, що всі внутрішні буфери, пов’язані з f, записуються на диск.

Наявність: Unix, Windows.

os.ftruncate(fd, length)

Обріжте файл, що відповідає файловому дескриптору fd, щоб він мав розмір не більше length байтів. Починаючи з Python 3.3, це еквівалентно os.truncate(fd, length).

Викликає подію аудиту os.truncate з аргументами fd, length.

Наявність: Unix, Windows.

Змінено в версії 3.5: Додана підтримка Windows

os.get_blocking(fd)

Отримати режим блокування дескриптора файлу: False, якщо встановлено прапорець O_NONBLOCK, True, якщо прапорець знято.

Дивіться також set_blocking() і socket.socket.setblocking().

Наявність: Unix.

Нове в версії 3.5.

os.isatty(fd)

Повертає True, якщо файловий дескриптор fd відкрито та підключено до tty(-like) пристрою, інакше False.

os.lockf(fd, cmd, len)

Застосуйте, перевірте або видаліть блокування POSIX для відкритого файлового дескриптора. fd — дескриптор відкритого файлу. cmd визначає команду для використання - одну з F_LOCK, F_TLOCK, F_ULOCK або F_TEST. len вказує розділ файлу, який потрібно заблокувати.

Викликає подію аудиту os.lockf з аргументами fd, cmd, 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)

Set the current position of file descriptor fd to position pos, modified by how: SEEK_SET or 0 to set the position relative to the beginning of the file; SEEK_CUR or 1 to set it relative to the current position; SEEK_END or 2 to set it relative to the end of the file. Return the new cursor position in bytes, starting from the beginning.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

Parameters to the lseek() function. Their values are 0, 1, and 2, respectively.

Нове в версії 3.3: Some operating systems could support additional values, like os.SEEK_HOLE or os.SEEK_DATA.

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

Відкрийте шлях до файлу та встановіть різні позначки відповідно до flags і, можливо, його режим відповідно до mode. Під час обчислення режиму поточне значення umask спочатку маскується. Повертає файловий дескриптор для щойно відкритого файлу. Новий файловий дескриптор не успадковується.

Для опису значень прапора та режиму дивіться документацію про час виконання C; константи прапорів (наприклад, O_RDONLY і O_WRONLY) визначені в модулі os. Зокрема, у Windows додавання O_BINARY потрібне для відкриття файлів у бінарному режимі.

Ця функція може підтримувати шляхи відносно дескрипторів каталогу з параметром dir_fd.

Викликає подію аудиту open з аргументами path, mode, flags.

Змінено в версії 3.4: Новий файловий дескриптор тепер не успадковується.

Примітка

Ця функція призначена для низькорівневого введення-виведення. Для звичайного використання використовуйте вбудовану функцію open(), яка повертає об’єкт file object з методами read() і write() (і набагато більше). Щоб обернути файловий дескриптор у файловий об’єкт, використовуйте fdopen().

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.5: Якщо системний виклик перервано, а обробник сигналу не викликає виключення, функція тепер повторює системний виклик замість того, щоб викликати виняток InterruptedError (перегляньте PEP 475 для обґрунтування).

Змінено в версії 3.6: Приймає path-like object.

Наступні константи є опціями для параметра 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_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.

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

Наведені вище константи є розширеннями і не присутні, якщо вони не визначені бібліотекою C.

Змінено в версії 3.4: Додайте O_PATH до систем, які його підтримують. Додайте O_TMPFILE, доступний лише на ядрі Linux 3.11 або новіших.

os.openpty()

Відкрийте нову пару псевдотерміналів. Повертає пару файлових дескрипторів (master, slave) для pty і tty відповідно. Нові дескриптори файлів не успадковуються. Для (трохи) більш портативного підходу використовуйте модуль pty.

Availability: some flavors of Unix.

Змінено в версії 3.4: Нові файлові дескриптори тепер не успадковуються.

os.pipe()

Створіть трубу. Повертає пару файлових дескрипторів (r, w), які можна використовувати для читання та запису відповідно. Новий файловий дескриптор не успадковується.

Наявність: Unix, Windows.

Змінено в версії 3.4: Нові файлові дескриптори тепер не успадковуються.

os.pipe2(flags)

Створіть трубу з прапорцями, встановленими атомарно. прапорці можуть бути створені шляхом об’єднання одного або кількох із цих значень O_NONBLOCK, O_CLOEXEC. Повертає пару файлових дескрипторів (r, w), які можна використовувати для читання та запису відповідно.

Availability: some flavors of Unix.

Нове в версії 3.3.

os.posix_fallocate(fd, offset, len)

Переконується, що для файлу, указаного fd, виділено достатньо місця на диску, починаючи з offset і продовжуючи len байт.

Наявність: Unix.

Нове в версії 3.3.

os.posix_fadvise(fd, offset, len, advice)

Оголошує про намір отримати доступ до даних за певним шаблоном, що дозволяє ядру проводити оптимізацію. Порада стосується регіону файлу, визначеного fd, починаючи з offset і продовжуючи len байти. порада є одним із 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, n, offset)

Прочитати щонайбільше n байт із файлового дескриптора fd у позиції offset, залишаючи зміщення файлу незмінним.

Повертає байтовий рядок, що містить прочитані байти. Якщо досягнуто кінця файлу, на який посилається fd, повертається порожній об’єкт bytes.

Наявність: Unix.

Нове в версії 3.3.

os.preadv(fd, buffers, offset, flags=0)

Читання з файлового дескриптора fd у позиції offset у змінні байт-подібні об’єкти buffers, залишаючи зміщення файлу незмінним. Передайте дані в кожен буфер, доки він не заповниться, а потім перейдіть до наступного буфера в послідовності, щоб утримувати решту даних.

Аргумент flags містить порозрядне АБО нуля або більше таких прапорів:

Повертає загальну кількість фактично прочитаних байтів, яка може бути меншою за загальну ємність усіх об’єктів.

Операційна система може встановити обмеження (sysconf() значення 'SC_IOV_MAX') на кількість буферів, які можна використовувати.

Поєднайте функціональні можливості os.readv() і os.pread().

Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires Linux 4.6 or newer.

Нове в версії 3.7.

os.RWF_NOWAIT

Не чекайте даних, які доступні не відразу. Якщо вказано цей прапорець, системний виклик повернеться миттєво, якщо йому доведеться прочитати дані з резервного сховища або дочекатися блокування.

If some data was successfully read, it will return the number of bytes read. If no bytes were read, it will return -1 and set errno to errno.EAGAIN.

Availability: Linux 4.14 and newer.

Нове в версії 3.7.

os.RWF_HIPRI

Високий пріоритет читання/запису. Дозволяє файловим системам на основі блоків використовувати опитування пристрою, що забезпечує меншу затримку, але може використовувати додаткові ресурси.

Наразі в Linux цю функцію можна використовувати лише для дескриптора файлу, відкритого за допомогою позначки O_DIRECT.

Availability: Linux 4.6 and newer.

Нове в версії 3.7.

os.pwrite(fd, str, offset)

Запишіть байтовий рядок у str у файловий дескриптор fd у позиції offset, залишаючи зміщення файлу без змін.

Повертає кількість фактично записаних байтів.

Наявність: Unix.

Нове в версії 3.3.

os.pwritev(fd, buffers, offset, flags=0)

Write the buffers contents to file descriptor fd at a offset offset, leaving the file offset unchanged. buffers must be a sequence of bytes-like objects. Buffers are processed in array order. Entire contents of the first buffer is written before proceeding to the second, and so on.

Аргумент flags містить порозрядне АБО нуля або більше таких прапорів:

Повертає загальну кількість фактично записаних байтів.

Операційна система може встановити обмеження (sysconf() значення 'SC_IOV_MAX') на кількість буферів, які можна використовувати.

Поєднайте функції os.writev() і os.pwrite().

Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, OpenBSD 2.7 and newer, AIX 7.1 and newer. Using flags requires Linux 4.7 or newer.

Нове в версії 3.7.

os.RWF_DSYNC

Provide a per-write equivalent of the O_DSYNC open(2) flag. This flag effect applies only to the data range written by the system call.

Availability: Linux 4.7 and newer.

Нове в версії 3.7.

os.RWF_SYNC

Provide a per-write equivalent of the O_SYNC open(2) flag. This flag effect applies only to the data range written by the system call.

Availability: Linux 4.7 and newer.

Нове в версії 3.7.

os.read(fd, n)

Прочитати щонайбільше n байт із файлового дескриптора fd.

Повертає байтовий рядок, що містить прочитані байти. Якщо досягнуто кінця файлу, на який посилається fd, повертається порожній об’єкт bytes.

Примітка

Ця функція призначена для низькорівневого вводу-виводу та має застосовуватися до дескриптора файлу, який повертає os.open() або pipe(). Щоб прочитати «файловий об’єкт», повернутий вбудованою функцією open() або popen() або fdopen(), або sys.stdin, використовуйте його read() або readline() методи.

Змінено в версії 3.5: Якщо системний виклик перервано, а обробник сигналу не викликає виключення, функція тепер повторює системний виклик замість того, щоб викликати виняток InterruptedError (перегляньте PEP 475 для обґрунтування).

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

Скопіюйте count байтів із файлового дескриптора in_fd до файлового дескриптора out_fd, починаючи зі offset. Повертає кількість надісланих байтів. Коли EOF досягнуто, повертає 0.

Першу нотацію функції підтримують усі платформи, які визначають sendfile().

У Linux, якщо offset задано як None, байти зчитуються з поточної позиції in_fd, а позиція in_fd оновлюється.

Другий випадок можна використовувати в macOS і FreeBSD, де заголовки і кінці є довільними послідовностями буферів, які записуються до і після запису даних з in_fd. Він повертає те саме, що й перший випадок.

У macOS і FreeBSD значення 0 для count вказує на надсилання до кінця in_fd.

Усі платформи підтримують сокети як файловий дескриптор out_fd, а деякі платформи також дозволяють інші типи (наприклад, звичайний файл, канал).

Міжплатформні програми не повинні використовувати аргументи headers, trailers і flags.

Наявність: Unix.

Примітка

Щоб отримати обгортку вищого рівня sendfile(), перегляньте socket.socket.sendfile().

Нове в версії 3.3.

Змінено в версії 3.9: Параметри out і in перейменовано на out_fd і in_fd.

os.set_blocking(fd, blocking)

Встановити режим блокування вказаного файлового дескриптора. Установіть прапорець O_NONBLOCK, якщо блокування має значення False, зніміть прапорець в іншому випадку.

Дивіться також get_blocking() і socket.socket.setblocking().

Наявність: Unix.

Нове в версії 3.5.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

Параметри функції sendfile(), якщо реалізація їх підтримує.

Наявність: Unix.

Нове в версії 3.3.

os.readv(fd, buffers)

Читання з файлового дескриптора fd у кілька змінних байт-подібних об’єктів буферів. Передайте дані в кожен буфер, доки він не заповниться, а потім перейдіть до наступного буфера в послідовності, щоб утримувати решту даних.

Повертає загальну кількість фактично прочитаних байтів, яка може бути меншою за загальну ємність усіх об’єктів.

Операційна система може встановити обмеження (sysconf() значення 'SC_IOV_MAX') на кількість буферів, які можна використовувати.

Наявність: 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)

Запишіть байтовий рядок у str до файлового дескриптора fd.

Повертає кількість фактично записаних байтів.

Примітка

Ця функція призначена для низькорівневого вводу-виводу та має застосовуватися до дескриптора файлу, який повертає os.open() або pipe(). Щоб записати «файловий об’єкт», який повертає вбудована функція open() або popen() або fdopen(), або sys.stdout або sys.stderr, використовуйте його метод write().

Змінено в версії 3.5: Якщо системний виклик перервано, а обробник сигналу не викликає виключення, функція тепер повторює системний виклик замість того, щоб викликати виняток InterruptedError (перегляньте PEP 475 для обґрунтування).

os.writev(fd, buffers)

Запишіть вміст buffers у файловий дескриптор fd. буфери мають бути послідовністю байт-подібних об’єктів. Буфери обробляються в порядку масиву. Весь вміст першого буфера записується перед переходом до другого і так далі.

Повертає загальну кількість фактично записаних байтів.

Операційна система може встановити обмеження (sysconf() значення 'SC_IOV_MAX') на кількість буферів, які можна використовувати.

Наявність: Unix.

Нове в версії 3.3.

Запит розміру терміналу

Нове в версії 3.3.

os.get_terminal_size(fd=STDOUT_FILENO)

Повертає розмір вікна терміналу як (стовпці, рядки), кортеж типу terminal_size.

Додатковий аргумент fd (за замовчуванням STDOUT_FILENO або стандартний вивід) визначає, який дескриптор файлу слід запитувати.

Якщо дескриптор файлу не підключено до терміналу, виникає OSError.

shutil.get_terminal_size() — це функція високого рівня, яка зазвичай повинна використовуватися, os.get_terminal_size — це реалізація низького рівня.

Наявність: Unix, Windows.

class os.terminal_size

Підклас кортежу, що містить (стовпці, рядки) розміру вікна терміналу.

columns

Ширина вікна терміналу в символах.

lines

Висота вікна терміналу в символах.

Успадкування файлових дескрипторів

Нове в версії 3.4.

Файловий дескриптор має позначку «успадковуваний», яка вказує, чи може файловий дескриптор успадковуватися дочірніми процесами. Починаючи з Python 3.4, дескриптори файлів, створені Python, за замовчуванням не успадковуються.

В UNIX неуспадковані файлові дескриптори закриваються в дочірніх процесах під час виконання нової програми, інші файлові дескриптори успадковуються.

У Windows неуспадковані дескриптори та дескриптори файлів закриті в дочірніх процесах, за винятком стандартних потоків (дескриптори файлів 0, 1 і 2: stdin, stdout і stderr), які завжди успадковуються. За допомогою функцій spawn* успадковуються всі успадковані маркери та всі успадковані дескриптори файлів. За допомогою модуля subprocess усі файлові дескриптори, крім стандартних потоків, закриваються, а успадковані дескриптори успадковуються, лише якщо параметр close_fds має значення False.

os.get_inheritable(fd)

Отримайте позначку «успадкований» зазначеного файлового дескриптора (логічне значення).

os.set_inheritable(fd, inheritable)

Встановіть прапорець «успадкований» для зазначеного файлового дескриптора.

os.get_handle_inheritable(handle)

Отримайте прапор «успадкований» зазначеного маркера (логічне значення).

Наявність: Windows.

os.set_handle_inheritable(handle, inheritable)

Встановіть прапорець «успадкований» для вказаного маркера.

Наявність: Windows.

Файли та каталоги

На деяких платформах Unix багато з цих функцій підтримують одну або кілька таких функцій:

  • зазначення дескриптора файлу: Зазвичай аргумент path, який надається функціям у модулі os, має бути рядком, що вказує шлях до файлу. Однак деякі функції тепер альтернативно приймають дескриптор відкритого файлу для свого аргументу path. Потім функція працюватиме з файлом, на який посилається дескриптор. (Для систем POSIX Python викличе варіант функції з префіксом f (наприклад, виклик fchdir замість chdir).)

    Ви можете перевірити, чи можна вказати шлях як дескриптор файлу для певної функції на вашій платформі за допомогою os.supports_fd. Якщо ця функція недоступна, її використання призведе до помилки NotImplementedError.

    Якщо функція також підтримує аргументи dir_fd або follow_symlinks, буде помилкою вказати один із них під час надання шляху як дескриптора файлу.

  • шляхи відносно дескрипторів каталогу: Якщо dir_fd не є None, це має бути дескриптор файлу, який посилається на каталог, а шлях для роботи має бути відносним; тоді шлях буде відносним до цього каталогу. Якщо шлях абсолютний, dir_fd ігнорується. (Для систем POSIX Python викличе варіант функції з суфіксом at і, можливо, з префіксом f (наприклад, виклик faccessat замість access).

    Ви можете перевірити, чи підтримується dir_fd для певної функції на вашій платформі за допомогою os.supports_dir_fd. Якщо він недоступний, його використання призведе до помилки NotImplementedError.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

Використовуйте справжній uid/gid, щоб перевірити доступ до шляху. Зауважте, що більшість операцій використовуватиме ефективний uid/gid, тому цю підпрограму можна використовувати в середовищі suid/sgid, щоб перевірити, чи має користувач, який викликає, вказаний доступ до path. режим має бути F_OK, щоб перевірити існування шляху, або він може бути включним АБО одного чи кількох R_OK, W_OK і X_OK, щоб перевірити дозволи. Повертає True, якщо доступ дозволено, False, якщо ні. Додаткову інформацію див. на сторінці довідки Unix access(2).

Ця функція може підтримувати вказівку шляхів відносно дескрипторів каталогу і не слідувати символічним посиланням.

Якщо effective_ids має значення True, access() виконуватиме перевірку доступу, використовуючи ефективний uid/gid замість справжнього uid/gid. effective_ids може не підтримуватися на вашій платформі; ви можете перевірити, чи він доступний, за допомогою os.supports_effective_ids. Якщо він недоступний, його використання призведе до помилки NotImplementedError.

Примітка

Використовуючи access(), щоб перевірити, чи має користувач право, наприклад, відкрити файл перед тим, як це зробити за допомогою open() створює діру в безпеці, тому що користувач може використати короткий проміжок часу між перевіркою та відкриттям файлу, щоб маніпулювати ним. Бажано використовувати техніку EAFP. Наприклад:

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.

Змінено в версії 3.6: Приймає path-like object.

os.F_OK
os.R_OK
os.W_OK
os.X_OK

Значення, які потрібно передавати як параметр mode access(), щоб перевірити наявність, читабельність, запис і можливість виконання path відповідно.

os.chdir(path)

Змініть поточний робочий каталог на шлях.

Ця функція може підтримувати зазначення файлового дескриптора. Дескриптор має посилатися на відкритий каталог, а не на відкритий файл.

Ця функція може викликати OSError і підкласи, такі як FileNotFoundError, PermissionError і NotADirectoryError.

Викликає подію аудиту os.chdir з аргументом path.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора файлу на деяких платформах.

Змінено в версії 3.6: Приймає path-like object.

os.chflags(path, flags, *, follow_symlinks=True)

Встановіть прапорці шляху на числові прапорці. flags може приймати комбінацію (порозрядне АБО) таких значень (як визначено в модулі stat):

Ця функція підтримує неперехід за символічними посиланнями.

Викликає подію аудиту os.chflags з аргументами path, flags.

Наявність: Unix.

Нове в версії 3.3: The follow_symlinks argument.

Змінено в версії 3.6: Приймає path-like object.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

Змініть режим шляху на числовий режим. mode може приймати одне з наступних значень (як визначено в модулі stat) або їх комбінації порозрядними АБО:

Ця функція може підтримувати зазначення дескриптора файлу, шляхи відносно дескрипторів каталогу та неперехід за символічними посиланнями.

Примітка

Although Windows supports chmod(), you can only set the file’s read-only flag with it (via the stat.S_IWRITE and stat.S_IREAD constants or a corresponding integer value). All other bits are ignored.

Викликає подію аудиту os.chmod з аргументами path, mode, dir_fd.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу, а також аргументів dir_fd і follow_symlinks.

Змінено в версії 3.6: Приймає path-like object.

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

Змініть власника та ідентифікатор групи path на числові uid і gid. Щоб залишити один із ідентифікаторів без змін, встановіть для нього значення -1.

Ця функція може підтримувати зазначення дескриптора файлу, шляхи відносно дескрипторів каталогу та неперехід за символічними посиланнями.

Перегляньте shutil.chown() для функції вищого рівня, яка приймає імена на додаток до числових ідентифікаторів.

Викликає подію аудиту os.chown з аргументами path, uid, gid, dir_fd.

Наявність: Unix.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу, а також аргументів dir_fd і follow_symlinks.

Змінено в версії 3.6: Підтримує path-like object.

os.chroot(path)

Змініть кореневий каталог поточного процесу на шлях.

Наявність: Unix.

Змінено в версії 3.6: Приймає path-like object.

os.fchdir(fd)

Змініть поточний робочий каталог на каталог, представлений дескриптором файлу fd. Дескриптор має посилатися на відкритий каталог, а не на відкритий файл. Починаючи з Python 3.3, це еквівалентно os.chdir(fd).

Викликає подію аудиту os.chdir з аргументом path.

Наявність: Unix.

os.getcwd()

Повертає рядок, що представляє поточний робочий каталог.

os.getcwdb()

Повертає байтовий рядок, що представляє поточний робочий каталог.

Змінено в версії 3.8: Функція тепер використовує кодування UTF-8 у Windows, а не кодову сторінку ANSI: див. PEP 529 для обґрунтування. Ця функція більше не підтримується в Windows.

os.lchflags(path, flags)

Встановіть прапорці path на числові flags, наприклад chflags(), але не переходьте за символічними посиланнями. Починаючи з Python 3.3, це еквівалентно os.chflags(path, flags, follow_symlinks=False).

Викликає подію аудиту os.chflags з аргументами path, flags.

Наявність: Unix.

Змінено в версії 3.6: Приймає path-like object.

os.lchmod(path, mode)

Змініть режим шляху на числовий режим. Якщо шлях є символічним посиланням, це впливає на символічне посилання, а не на ціль. Перегляньте документацію для chmod(), щоб дізнатися про можливі значення mode. Починаючи з Python 3.3, це еквівалентно os.chmod(path, mode, follow_symlinks=False).

Викликає подію аудиту os.chmod з аргументами path, mode, dir_fd.

Наявність: Unix.

Змінено в версії 3.6: Приймає path-like object.

os.lchown(path, uid, gid)

Змініть власника та ідентифікатор групи path на числові uid і gid. Ця функція не переходитиме за символічними посиланнями. Починаючи з Python 3.3, це еквівалентно os.chown(path, uid, gid, follow_symlinks=False).

Викликає подію аудиту os.chown з аргументами path, uid, gid, dir_fd.

Наявність: Unix.

Змінено в версії 3.6: Приймає path-like object.

Створіть жорстке посилання на src під назвою dst.

Ця функція може підтримувати вказівку src_dir_fd та/або dst_dir_fd для надання шляхів відносно дескрипторів каталогу, і не слідування за символічними посиланнями.

Викликає подію аудиту os.link з аргументами src, dst, src_dir_fd, dst_dir_fd.

Наявність: Unix, Windows.

Змінено в версії 3.2: Додана підтримка Windows.

Нове в версії 3.3: Added the src_dir_fd, dst_dir_fd, and follow_symlinks arguments.

Змінено в версії 3.6: Приймає path-like object для src і dst.

os.listdir(path='.')

Повертає список, що містить імена записів у каталозі, заданому шляхом. Список розташований у довільному порядку й не містить спеціальних записів '.'' і '..'', навіть якщо вони присутні в каталозі. Якщо файл видалено з каталогу або додано до нього під час виклику цієї функції, не вказано, чи буде включено ім’я цього файлу.

path може бути path-like object. Якщо path має тип bytes (прямо чи опосередковано через інтерфейс PathLike), повернуті імена файлів також будуть типу bytes; за всіх інших обставин вони будуть типу str.

Ця функція також може підтримувати зазначення файлового дескриптора; дескриптор файлу повинен посилатися на каталог.

Викликає подію аудиту os.listdir з аргументом path.

Примітка

Щоб закодувати str імена файлів у байти, використовуйте fsencode().

Дивись також

Функція scandir() повертає записи каталогу разом із інформацією про атрибути файлів, забезпечуючи кращу продуктивність у багатьох поширених випадках використання.

Змінено в версії 3.2: Параметр path став необов’язковим.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу.

Змінено в версії 3.6: Приймає path-like object.

os.lstat(path, *, dir_fd=None)

Perform the equivalent of an lstat() system call on the given path. Similar to stat(), but does not follow symbolic links. Return a stat_result object.

На платформах, які не підтримують символічні посилання, це псевдонім для stat().

Починаючи з Python 3.3, це еквівалентно os.stat(path, dir_fd=dir_fd, follow_symlinks=False).

Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.

Дивись також

Функція stat().

Змінено в версії 3.2: Додано підтримку символічних посилань Windows 6.0 (Vista).

Змінено в версії 3.3: Додано параметр dir_fd.

Змінено в версії 3.6: Приймає path-like object.

Змінено в версії 3.8: У Windows тепер відкриваються точки повторного аналізу, які представляють інший шлях (сурогати імен), включаючи символічні посилання та з’єднання каталогів. Інші типи точок повторного аналізу вирішуються операційною системою як для stat().

os.mkdir(path, mode=0o777, *, dir_fd=None)

Створіть каталог під назвою path із числовим режимом mode.

Якщо каталог уже існує, виникає FileExistsError. Якщо батьківський каталог у шляху не існує, виникає FileNotFoundError.

У деяких системах режим ігнорується. Там, де воно використовується, поточне значення umask спочатку маскується. Якщо встановлено інші біти, ніж останні 9 (тобто останні 3 цифри вісімкового представлення режиму), їхнє значення залежить від платформи. На деяких платформах вони ігноруються, і вам слід явно викликати chmod(), щоб встановити їх.

On Windows, a mode of 0o700 is specifically handled to apply access control to the new directory such that only the current user and administrators have access. Other values of mode are ignored.

Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.

Також є можливість створювати тимчасові каталоги; подивіться функцію tempfile.mkdtemp() модуля tempfile.

Викликає подію аудиту os.mkdir з аргументами path, mode, dir_fd.

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.6: Приймає path-like object.

Змінено в версії 3.9.20: Windows now handles a mode of 0o700.

os.makedirs(name, mode=0o777, exist_ok=False)

Функція рекурсивного створення каталогу. Подібно до mkdir(), але створює всі каталоги середнього рівня, необхідні для того, щоб містити кінцевий каталог.

The mode parameter is passed to mkdir() for creating the leaf directory; see the mkdir() description for how it is interpreted. To set the file permission bits of any newly-created parent directories you can set the umask before invoking makedirs(). The file permission bits of existing parent directories are not changed.

If exist_ok is False (the default), an FileExistsError is raised if the target directory already exists.

Примітка

makedirs() заплутає, якщо елементи шляху, які потрібно створити, включають pardir (наприклад, «..» у системах UNIX).

Ця функція правильно обробляє шляхи UNC.

Викликає подію аудиту os.mkdir з аргументами path, mode, dir_fd.

Нове в версії 3.2: The exist_ok parameter.

Змінено в версії 3.4.1: До Python 3.4.1, якщо exist_ok було True і каталог існував, makedirs() все одно викликав помилку, якщо mode не відповідав режиму існуючого каталогу. Оскільки таку поведінку було неможливо реалізувати безпечно, її було видалено в Python 3.4.1. Див. bpo-21082.

Змінено в версії 3.6: Приймає path-like object.

Змінено в версії 3.7: The mode argument no longer affects the file permission bits of newly-created intermediate-level directories.

os.mkfifo(path, mode=0o666, *, dir_fd=None)

Створіть FIFO (іменований канал) під назвою path із числовим режимом mode. Поточне значення umask спочатку маскується з режиму.

Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.

FIFO — це канали, до яких можна отримати доступ, як до звичайних файлів. FIFO існують, доки їх не буде видалено (наприклад, за допомогою os.unlink()). Зазвичай FIFO використовуються як місце зустрічі між процесами типу «клієнт» і «сервер»: сервер відкриває FIFO для читання, а клієнт відкриває його для запису. Зверніть увагу, що mkfifo() не відкриває FIFO — він лише створює точку зустрічі.

Наявність: Unix.

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.6: Приймає path-like object.

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

Створіть вузол файлової системи (файл, спеціальний файл пристрою або іменований канал) під назвою шлях. mode визначає як дозволи для використання, так і тип вузла, який буде створено, поєднуючись (побітове АБО) з одним із stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK і stat.S_IFIFO (ці константи доступні в stat). Для stat.S_IFCHR і stat.S_IFBLK device визначає щойно створений спеціальний файл пристрою (імовірно, використовуючи os.makedev()), інакше він ігнорується.

Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.

Наявність: Unix.

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.6: Приймає path-like object.

os.major(device)

Extract the device major number from a raw device number (usually the st_dev or st_rdev field from stat).

os.minor(device)

Extract the device minor number from a raw device number (usually the st_dev or st_rdev field from 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.

Змінено в версії 3.6: Приймає path-like object.

os.pathconf_names

Словник зіставляє імена, прийняті pathconf() і fpathconf() до цілих значень, визначених для цих імен головною операційною системою. Це можна використовувати для визначення набору імен, відомих системі.

Наявність: Unix.

Повертає рядок, що представляє шлях, на який вказує символічне посилання. Результатом може бути абсолютний або відносний шлях; якщо він відносний, його можна перетворити на абсолютний шлях за допомогою os.path.join(os.path.dirname(path), result).

Якщо шлях є рядковим об’єктом (прямо чи опосередковано через інтерфейс PathLike), результат також буде рядковим об’єктом, і виклик може викликати UnicodeDecodeError. Якщо шлях є об’єктом bytes (прямим чи опосередкованим), результатом буде об’єкт bytes.

Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.

Під час спроби визначити шлях, який може містити посилання, використовуйте realpath() для належної обробки рекурсії та відмінностей платформи.

Наявність: Unix, Windows.

Змінено в версії 3.2: Додано підтримку символічних посилань Windows 6.0 (Vista).

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.6: Приймає path-like object в Unix.

Змінено в версії 3.8: Приймає path-like object і об’єкт bytes у Windows.

Змінено в версії 3.8: Додано підтримку для з’єднань каталогів і змінено, щоб повертати шлях підстановки (який зазвичай включає префікс \\?\), а не необов’язкове поле «назви для друку», яке поверталося раніше.

os.remove(path, *, dir_fd=None)

Remove (delete) the file path. If path is a directory, an IsADirectoryError is raised. Use rmdir() to remove directories. If the file does not exist, a FileNotFoundError is raised.

Ця функція може підтримувати шляхи відносно дескрипторів каталогу.

У Windows спроба видалити файл, який використовується, викликає виняток; в Unix запис каталогу видаляється, але сховище, виділене для файлу, не стає доступним, доки оригінальний файл більше не буде використовуватися.

Ця функція семантично ідентична unlink().

Викликає подію аудиту os.remove з аргументами path, dir_fd.

Нове в версії 3.3: The dir_fd argument.

Змінено в версії 3.6: Приймає path-like object.

os.removedirs(name)

Видалити каталоги рекурсивно. Працює як rmdir(), за винятком того, що якщо кінцевий каталог успішно видалено, removedirs() намагається послідовно видалити кожен батьківський каталог, згаданий у path, доки не виникне помилка (яка ігнорується, оскільки зазвичай означає, що батьківський каталог не порожній). Наприклад, os.removedirs('foo/bar/baz') спочатку видалить каталог 'foo/bar/baz', а потім видалить 'foo/bar' і` „foo“`, якщо вони порожні. Викликає OSError, якщо кінцевий каталог не вдалося успішно видалити.

Викликає подію аудиту os.remove з аргументами path, dir_fd.

Змінено в версії 3.6: Приймає path-like object.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Перейменуйте файл або каталог src на dst. Якщо dst існує, операція буде невдалою з підкласом OSError у кількох випадках:

On Windows, if dst exists a FileExistsError is always raised.

On Unix, if src is a file and dst is a directory or vice-versa, an IsADirectoryError or a NotADirectoryError will be raised respectively. If both are directories and dst is empty, dst will be silently replaced. If dst is a non-empty directory, an OSError is raised. If both are files, dst it will be replaced silently if the user has permission. The operation may fail on some Unix flavors if src and dst are on different filesystems. If successful, the renaming will be an atomic operation (this is a POSIX requirement).

Ця функція може підтримувати вказівку src_dir_fd та/або dst_dir_fd для надання шляхів відносно дескрипторів каталогу.

Якщо ви бажаєте перезаписати місце призначення на різних платформах, використовуйте replace().

Викликає подію аудиту os.rename з аргументами src, dst, src_dir_fd, dst_dir_fd.

Нове в версії 3.3: The src_dir_fd and dst_dir_fd arguments.

Змінено в версії 3.6: Приймає path-like object для src і dst.

os.renames(old, new)

Функція рекурсивного перейменування каталогу або файлу. Працює як rename(), за винятком того, що спочатку намагаються створити будь-які проміжні каталоги, необхідні для того, щоб зробити нове ім’я шляху правильним. Після перейменування каталоги, які відповідають крайнім правим сегментам шляху старої назви, будуть видалені за допомогою removedirs().

Примітка

Ця функція може вийти з ладу з новою структурою каталогів, якщо у вас немає дозволів, необхідних для видалення кінцевого каталогу або файлу.

Викликає подію аудиту os.rename з аргументами src, dst, src_dir_fd, dst_dir_fd.

Змінено в версії 3.6: Приймає path-like object для old і new.

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 для надання шляхів відносно дескрипторів каталогу.

Викликає подію аудиту os.rename з аргументами src, dst, src_dir_fd, dst_dir_fd.

Нове в версії 3.3.

Змінено в версії 3.6: Приймає path-like object для src і dst.

os.rmdir(path, *, dir_fd=None)

Remove (delete) the directory path. If the directory does not exist or is not empty, an FileNotFoundError or an OSError is raised respectively. In order to remove whole directory trees, shutil.rmtree() can be used.

Ця функція може підтримувати шляхи відносно дескрипторів каталогу.

Викликає подію аудиту os.rmdir з аргументами path, dir_fd.

Нове в версії 3.3: The dir_fd parameter.

Змінено в версії 3.6: Приймає path-like object.

os.scandir(path='.')

Повертає ітератор об’єктів os.DirEntry, що відповідають записам у каталозі, визначеному path. Записи надаються в довільному порядку, і спеціальні записи '.' і '..' не включені. Якщо файл видалено з каталогу або додано до нього після створення ітератора, чи буде включений запис для цього файлу, не визначено.

Використання scandir() замість listdir() може значно підвищити продуктивність коду, який також потребує інформації про тип файлу чи атрибути файлу, оскільки об’єкти os.DirEntry надають цю інформацію, якщо операційна система надає під час сканування каталогу. Усі методи os.DirEntry можуть виконувати системний виклик, але is_dir() і is_file() зазвичай вимагають лише системного виклику для символічних посилань; os.DirEntry.stat() завжди вимагає системного виклику в Unix, але вимагає лише один для символічних посилань у Windows.

path може бути path-like object. Якщо path має тип bytes (прямо чи опосередковано через інтерфейс PathLike), тип name і Атрибути path кожного os.DirEntry будуть bytes; за всіх інших обставин вони будуть типу str.

Ця функція також може підтримувати зазначення файлового дескриптора; дескриптор файлу повинен посилатися на каталог.

Викликає подію аудиту os.scandir з аргументом path.

Ітератор scandir() підтримує протокол context manager і має такий метод:

scandir.close()

Закрийте ітератор і звільніть отримані ресурси.

Це викликається автоматично, коли ітератор вичерпано або зібрано сміття, або коли під час ітерації трапляється помилка. Однак бажано викликати його явно або використовувати оператор with.

Нове в версії 3.6.

У наступному прикладі показано просте використання scandir() для відображення всіх файлів (за винятком каталогів) у заданому шляху, які не починаються з '.'. Виклик entry.is_file() зазвичай не здійснить додатковий системний виклик:

with os.scandir(path) as it:
    for entry in it:
        if not entry.name.startswith('.') and entry.is_file():
            print(entry.name)

Примітка

On Unix-based systems, scandir() uses the system’s opendir() and readdir() functions. On Windows, it uses the Win32 FindFirstFileW and FindNextFileW functions.

Нове в версії 3.5.

Нове в версії 3.6: Added support for the context manager protocol and the close() method. If a scandir() iterator is neither exhausted nor explicitly closed a ResourceWarning will be emitted in its destructor.

Функція приймає path-like object.

Змінено в версії 3.7: Додано підтримку дескрипторів файлів в Unix.

class os.DirEntry

Об’єкт, створений scandir() для показу шляху до файлу та інших атрибутів файлу в записі каталогу.

scandir() надасть якомога більше цієї інформації без додаткових системних викликів. Коли виконується системний виклик stat() або lstat(), об’єкт os.DirEntry кешує результат.

Екземпляри os.DirEntry не призначені для зберігання в довгострокових структурах даних; якщо ви знаєте, що метадані файлу змінилися, або якщо після виклику scandir() минуло багато часу, викличте os.stat(entry.path), щоб отримати актуальну інформацію.

Оскільки методи os.DirEntry можуть здійснювати виклики операційної системи, вони також можуть викликати OSError. Якщо вам потрібен дуже точний контроль над помилками, ви можете перехопити OSError під час виклику одного з методів os.DirEntry і обробити відповідно.

Для безпосереднього використання як path-like object, os.DirEntry реалізує інтерфейс PathLike.

Атрибути та методи екземпляра os.DirEntry такі:

name

Базове ім’я файлу запису відносно аргументу path scandir().

Атрибут name буде bytes, якщо аргумент scandir() path має тип bytes та str інакше. Використовуйте fsdecode() для декодування байтових імен файлів.

path

Повний шлях до запису: еквівалент os.path.join(scandir_path, entry.name), де scandir_path є аргументом scandir() path. Шлях є абсолютним, лише якщо аргумент path scandir() був абсолютним. Якщо аргумент scandir() path був дескриптором файлу, атрибут path буде таким самим, як атрибут name.

Атрибут path матиме значення bytes, якщо аргумент path scandir() має тип bytes та str інакше. Використовуйте fsdecode() для декодування байтових імен файлів.

inode()

Повертає номер inode запису.

Результат кешується в об’єкті os.DirEntry. Використовуйте os.stat(entry.path, follow_symlinks=False).st_ino, щоб отримати актуальну інформацію.

Для першого некешованого виклику потрібен системний виклик у Windows, але не в Unix.

is_dir(*, follow_symlinks=True)

Повертає True, якщо цей запис є каталогом або символічним посиланням, що вказує на каталог; повертає False, якщо запис є або вказує на будь-який інший тип файлу, або якщо він більше не існує.

Якщо follow_symlinks має значення False, повертає True, лише якщо цей запис є каталогом (без наступних символічних посилань); повертає False, якщо запис є файлом будь-якого іншого типу або якщо він більше не існує.

Результат кешується в об’єкті os.DirEntry з окремим кешем для follow_symlinks True і False. Викличте os.stat() разом із stat.S_ISDIR(), щоб отримати актуальну інформацію.

Під час першого некешованого виклику в більшості випадків системний виклик не потрібен. Зокрема, для несимволічних посилань ні Windows, ні Unix не потребують системного виклику, за винятком певних файлових систем Unix, таких як мережеві файлові системи, які повертають dirent.d_type == DT_UNKNOWN. Якщо запис є символічним посиланням, для переходу за символічним посиланням знадобиться системний виклик, якщо follow_symlinks не має значення False.

Цей метод може викликати OSError, наприклад PermissionError, але FileNotFoundError перехоплюється і не викликається.

is_file(*, follow_symlinks=True)

Повертає True, якщо цей запис є файлом або символічним посиланням, що вказує на файл; повертає False, якщо запис є або вказує на каталог або інший нефайловий запис, або якщо він більше не існує.

Якщо follow_symlinks має значення False, повертає True, лише якщо цей запис є файлом (без наступних символічних посилань); повертає False, якщо запис є каталогом чи іншим записом, що не є файлом, або якщо він більше не існує.

Результат кешується в об’єкті os.DirEntry. Кешування, системні виклики та викликані винятки відповідають is_dir().

Повертає True, якщо цей запис є символічним посиланням (навіть якщо пошкоджене); повертає False, якщо запис вказує на каталог або будь-який файл, або якщо він більше не існує.

Результат кешується в об’єкті os.DirEntry. Викличте os.path.islink(), щоб отримати актуальну інформацію.

Під час першого некешованого виклику в більшості випадків системний виклик не потрібен. Зокрема, ані Windows, ані Unix не потребують системного виклику, за винятком певних файлових систем Unix, таких як мережеві файлові системи, які повертають dirent.d_type == DT_UNKNOWN.

Цей метод може викликати OSError, наприклад PermissionError, але FileNotFoundError перехоплюється і не викликається.

stat(*, follow_symlinks=True)

Повернути об’єкт stat_result для цього запису. Цей метод за умовчанням слідує символічним посиланням; щоб стати символічним посиланням, додайте аргумент follow_symlinks=False.

В Unix цей метод завжди потребує системного виклику. У Windows системний виклик потрібен, лише якщо follow_symlinks має значення True і запис є точкою повторного аналізу (наприклад, символічне посилання або з’єднання каталогу).

У Windows атрибути st_ino, st_dev і st_nlink stat_result завжди встановлюються на нуль. Викличте os.stat(), щоб отримати ці атрибути.

Результат кешується в об’єкті os.DirEntry з окремим кешем для follow_symlinks True і False. Зателефонуйте os.stat(), щоб отримати актуальну інформацію.

Note that there is a nice correspondence between several attributes and methods of os.DirEntry and of pathlib.Path. In particular, the name attribute has the same meaning, as do the is_dir(), is_file(), is_symlink() and stat() methods.

Нове в версії 3.5.

Змінено в версії 3.6: Додано підтримку інтерфейсу PathLike. Додано підтримку шляхів bytes у Windows.

os.stat(path, *, dir_fd=None, follow_symlinks=True)

Отримати статус файлу або дескриптора файлу. Виконайте еквівалент системного виклику stat() на вказаному шляху. шлях можна вказати як рядок або байти — прямо чи опосередковано через інтерфейс PathLike — або як дескриптор відкритого файлу. Повертає об’єкт stat_result.

Ця функція зазвичай слідує за символічними посиланнями; щоб стати символічним посиланням, додайте аргумент follow_symlinks=False або використовуйте lstat().

Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.

У Windows передача follow_symlinks=False вимкне відстеження всіх сурогатних точок повторного аналізу імен, включаючи символічні посилання та з’єднання каталогів. Інші типи точок повторного аналізу, які не схожі на посилання або за якими операційна система не може слідувати, будуть відкриті безпосередньо. Під час переходу за ланцюгом із кількох посилань це може призвести до повернення оригінального посилання замість незв’язку, яке перешкоджало повному обходу. Щоб отримати статистичні результати для кінцевого шляху в цьому випадку, скористайтеся os.path.realpath() функцією, щоб вирішити назву шляху, наскільки це можливо, і викликайте lstat() для результату. Це не стосується висячих символічних посилань або точок з’єднання, які призведуть до звичайних винятків.

Приклад:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
os.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

Дивись також

Функції fstat() і lstat().

Нове в версії 3.3: Added the dir_fd and follow_symlinks arguments, specifying a file descriptor instead of a path.

Змінено в версії 3.6: Приймає path-like object.

Змінено в версії 3.8: У Windows усі точки повторного аналізу, які може вирішити операційна система, тепер відстежуються, а передача follow_symlinks=False вимикає відстеження всіх сурогатних точок повторного аналізу імен. Якщо операційна система досягає точки повторного аналізу, за якою вона не може слідувати, stat тепер повертає інформацію для початкового шляху, як якщо б було вказано follow_symlinks=False замість того, щоб викликати помилку.

class os.stat_result

Object whose attributes correspond roughly to the members of the stat structure. It is used for the result of os.stat(), os.fstat() and os.lstat().

Атрибути:

st_mode

Режим файлу: тип файлу та біти режиму файлу (дозволи).

st_ino

Залежить від платформи, але якщо не нуль, унікально ідентифікує файл для заданого значення st_dev. Зазвичай:

st_dev

Ідентифікатор пристрою, на якому знаходиться цей файл.

Кількість жорстких посилань.

st_uid

Ідентифікатор користувача власника файлу.

st_gid

Груповий ідентифікатор власника файлу.

st_size

Розмір файлу в байтах, якщо це звичайний файл або символьне посилання. Розмір символічного посилання - це довжина шляху, який воно містить, без кінцевого нульового байта.

Мітки часу:

st_atime

Час останнього доступу, виражений у секундах.

st_mtime

Час останньої зміни вмісту, виражений у секундах.

st_ctime

Platform dependent:

  • the time of most recent metadata change on Unix,

  • the time of creation on Windows, expressed in seconds.

st_atime_ns

Час останнього доступу, виражений у наносекундах як ціле число.

st_mtime_ns

Час останньої зміни вмісту, виражений у наносекундах як ціле число.

st_ctime_ns

Platform dependent:

  • the time of most recent metadata change on Unix,

  • the time of creation on Windows, expressed in nanoseconds as an integer.

Примітка

The exact meaning and resolution of the st_atime, st_mtime, and st_ctime attributes depend on the operating system and the file system. For example, on Windows systems using the FAT or FAT32 file systems, st_mtime has 2-second resolution, and st_atime has only 1-day resolution. See your operating system documentation for details.

Similarly, although st_atime_ns, st_mtime_ns, and st_ctime_ns are always expressed in nanoseconds, many systems do not provide nanosecond precision. On systems that do provide nanosecond precision, the floating-point object used to store st_atime, st_mtime, and st_ctime cannot preserve all of it, and as such will be slightly inexact. If you need the exact timestamps you should always use st_atime_ns, st_mtime_ns, and st_ctime_ns.

У деяких системах Unix (таких як Linux) також можуть бути доступні такі атрибути:

st_blocks

Кількість 512-байтних блоків, виділених для файлу. Це може бути менше, ніж st_size/512, якщо файл має отвори.

st_blksize

«Бажаний» розмір блоку для ефективного введення/виведення файлової системи. Запис у файл меншими фрагментами може спричинити неефективне читання-змінення-перезапис.

st_rdev

Тип пристрою, якщо пристрій inode.

st_flags

Визначені користувачем позначки для файлу.

В інших системах Unix (таких як FreeBSD) такі атрибути можуть бути доступними (але можуть бути заповнені, лише якщо root намагається їх використати):

st_gen

Номер покоління файлу.

st_birthtime

Time of file creation.

У Solaris і похідних також можуть бути доступні такі атрибути:

st_fstype

Рядок, який однозначно визначає тип файлової системи, яка містить файл.

У системах macOS також можуть бути доступні такі атрибути:

st_rsize

Реальний розмір файлу.

st_creator

Творець файлу.

st_type

Тип файлу.

У системах Windows також доступні такі атрибути:

st_file_attributes

Windows file attributes: dwFileAttributes member of the BY_HANDLE_FILE_INFORMATION structure returned by GetFileInformationByHandle(). See the FILE_ATTRIBUTE_* constants in the stat module.

st_reparse_tag

When st_file_attributes has the FILE_ATTRIBUTE_REPARSE_POINT set, this field contains the tag identifying the type of reparse point. See the IO_REPARSE_TAG_* constants in the stat module.

The standard module stat defines functions and constants that are useful for extracting information from a stat structure. (On Windows, some items are filled with dummy values.)

For backward compatibility, a stat_result instance is also accessible as a tuple of at least 10 integers giving the most important (and portable) members of the stat structure, in the order st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. More items may be added at the end by some implementations. For compatibility with older Python versions, accessing stat_result as a tuple always returns integers.

Нове в версії 3.3: Added the st_atime_ns, st_mtime_ns, and st_ctime_ns members.

Нове в версії 3.5: Added the st_file_attributes member on Windows.

Змінено в версії 3.5: Тепер Windows повертає індекс файлу як st_ino, якщо він доступний.

Нове в версії 3.7: Додано член st_fstype до Solaris/derivatives.

Нове в версії 3.8: Додано член st_reparse_tag у Windows.

Змінено в версії 3.8: У Windows член st_mode тепер ідентифікує спеціальні файли як S_IFCHR, S_IFIFO або S_IFBLK відповідно.

os.statvfs(path)

Perform a statvfs() system call on the given path. The return value is an object whose attributes describe the filesystem on the given path, and correspond to the members of the statvfs structure, namely: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax, f_fsid.

Для бітових прапорів атрибута f_flag визначено дві константи рівня модуля: якщо встановлено ST_RDONLY, файлова система монтується лише для читання, а якщо встановлено ST_NOSUID, семантика бітів setuid/setgid вимкнена або не підтримується.

Для систем на основі GNU/glibc визначено додаткові константи рівня модуля. Це ST_NODEV (заборона доступу до спеціальних файлів пристрою), ST_NOEXEC (заборона виконання програми), ST_SYNCHRONOUS (записи синхронізуються одночасно), ST_MANDLOCK ( дозволити обов’язкове блокування FS), ST_WRITE (запис у файл/каталог/символне посилання), ST_APPEND (файл лише для додавання), ST_IMMUTABLE (незмінний файл), ST_NOATIME (не оновлювати час доступу), ST_NODIRATIME (не оновлювати час доступу до каталогу), ST_RELATIME (оновлювати atime відносно mtime/ctime).

Ця функція може підтримувати зазначення файлового дескриптора.

Наявність: Unix.

Змінено в версії 3.2: Додано константи ST_RDONLY і ST_NOSUID.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу.

Змінено в версії 3.4: ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS, ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, Додано константи ST_NOATIME, ST_NODIRATIME і ST_RELATIME.

Змінено в версії 3.6: Приймає path-like object.

Нове в версії 3.7: Added f_fsid.

os.supports_dir_fd

Об’єкт set, що вказує, які функції в модулі os приймають дескриптор відкритого файлу для свого параметра dir_fd. Різні платформи надають різні функції, а основні функції, які Python використовує для реалізації параметра dir_fd, доступні не на всіх платформах, які підтримує Python. Заради узгодженості функції, які можуть підтримувати dir_fd, завжди дозволяють вказати параметр, але створять виняток, якщо функція використовується, коли вона недоступна локально. (Визначення None для dir_fd завжди підтримується на всіх платформах.)

Щоб перевірити, чи певна функція приймає дескриптор відкритого файлу для свого параметра dir_fd, використовуйте оператор in на supports_dir_fd. Як приклад, цей вираз оцінюється як True, якщо os.stat() приймає дескриптори відкритих файлів для dir_fd на локальній платформі:

os.stat in os.supports_dir_fd

Наразі параметри dir_fd працюють лише на платформах Unix; жоден з них не працює в Windows.

Нове в версії 3.3.

os.supports_effective_ids

Об’єкт set, що вказує, чи дозволяє os.access() вказувати True для свого параметра effective_ids на локальній платформі. (Вказівка False для effective_ids завжди підтримується на всіх платформах.) Якщо локальна платформа підтримує це, колекція міститиме os.access(); інакше воно буде порожнім.

Цей вираз оцінюється як True, якщо os.access() підтримує effective_ids=True на локальній платформі:

os.access in os.supports_effective_ids

Наразі effective_ids підтримується лише на платформах Unix; це не працює в Windows.

Нове в версії 3.3.

os.supports_fd

Об’єкт set, що вказує, які функції в модулі os дозволяють вказувати свій параметр path як дескриптор відкритого файлу на локальній платформі. Різні платформи надають різні функції, а основні функції, які Python використовує для прийняття відкритих файлових дескрипторів як шлях аргументів, доступні не на всіх платформах, які підтримує Python.

Щоб визначити, чи дозволяє певна функція вказувати дескриптор відкритого файлу для свого параметра path, використовуйте оператор in на supports_fd. Як приклад, цей вираз має значення True, якщо os.chdir() приймає дескриптори відкритих файлів для path на вашій локальній платформі:

os.chdir in os.supports_fd

Нове в версії 3.3.

Об’єкт set, що вказує, які функції в модулі os приймають False для свого параметра follow_symlinks на локальній платформі. Різні платформи надають різні функції, а основні функції, які Python використовує для реалізації follow_symlinks, доступні не на всіх платформах, які підтримує Python. Заради узгодженості функції, які можуть підтримувати follow_symlinks, завжди дозволяють вказувати параметр, але викидають виняток, якщо функція використовується, коли вона недоступна локально. (Вказівка True для follow_symlinks завжди підтримується на всіх платформах.)

Щоб перевірити, чи певна функція приймає False для свого параметра follow_symlinks, використовуйте оператор in у supports_follow_symlinks. Як приклад, цей вираз має значення True, якщо ви можете вказати follow_symlinks=False під час виклику os.stat() на локальній платформі:

os.stat in os.supports_follow_symlinks

Нове в версії 3.3.

Створіть символічне посилання на src під назвою dst.

У Windows символічне посилання представляє або файл, або каталог і не перетворюється на ціль динамічно. Якщо ціль присутня, буде створено відповідний тип символічного посилання. В іншому випадку символічне посилання буде створено як каталог, якщо target_is_directory має значення True, або символічне посилання на файл (за замовчуванням), інакше. На платформах, відмінних від Windows, target_is_directory ігнорується.

Ця функція може підтримувати шляхи відносно дескрипторів каталогу.

Примітка

У новіших версіях Windows 10 непривілейовані облікові записи можуть створювати символічні посилання, якщо ввімкнено режим розробника. Якщо режим розробника недоступний/увімкнено, потрібен привілей SeCreateSymbolicLinkPrivilege, або процес потрібно запускати від імені адміністратора.

OSError виникає, коли функцію викликає непривілейований користувач.

Викликає подію аудиту os.symlink з аргументами src, dst, dir_fd.

Наявність: Unix, Windows.

Змінено в версії 3.2: Додано підтримку символічних посилань Windows 6.0 (Vista).

Нове в версії 3.3: Added the dir_fd argument, and now allow target_is_directory on non-Windows platforms.

Змінено в версії 3.6: Приймає path-like object для src і dst.

Змінено в версії 3.8: Додано підтримку непідвищених символічних посилань у Windows із режимом розробника.

os.sync()

Примусово записувати все на диск.

Наявність: Unix.

Нове в версії 3.3.

os.truncate(path, length)

Обріжте файл, що відповідає шляху, щоб його розмір не перевищував length байтів.

Ця функція може підтримувати зазначення файлового дескриптора.

Викликає подію аудиту os.truncate з аргументами path, length.

Наявність: Unix, Windows.

Нове в версії 3.3.

Змінено в версії 3.5: Додана підтримка Windows

Змінено в версії 3.6: Приймає path-like object.

Видалити (видалити) шлях до файлу. Ця функція семантично ідентична remove(); ім’я unlink є його традиційною назвою Unix. Будь ласка, перегляньте документацію для remove() для отримання додаткової інформації.

Викликає подію аудиту os.remove з аргументами path, dir_fd.

Нове в версії 3.3: The dir_fd parameter.

Змінено в версії 3.6: Приймає path-like object.

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

Встановіть час доступу та час зміни файлу, указаного шляхом.

utime() приймає два необов’язкові параметри, times і ns. Вони вказують час, встановлений на path і використовуються таким чином:

  • Якщо вказано ns, це має бути 2-кортеж у формі (atime_ns, mtime_ns), де кожен член є int, що виражає наносекунди.

  • Якщо times не є None, це має бути 2-кортеж у формі (atime, mtime), де кожен член є int або float, що виражає секунди.

  • Якщо times має значення None і ns не вказано, це еквівалентно вказівці ns=(atime_ns, mtime_ns), де обидва часи є поточним часом.

Помилково вказувати кортежі як для times, так і для ns.

Note that the exact times you set here may not be returned by a subsequent stat() call, depending on the resolution with which your operating system records access and modification times; see stat(). The best way to preserve exact times is to use the st_atime_ns and st_mtime_ns fields from the os.stat() result object with the ns parameter to utime.

Ця функція може підтримувати зазначення дескриптора файлу, шляхи відносно дескрипторів каталогу та неперехід за символічними посиланнями.

Викликає подію аудиту os.utime з аргументами path, times, ns, dir_fd.

Нове в версії 3.3: Додано підтримку для вказівки шляху як дескриптора відкритого файлу та параметрів dir_fd, follow_symlinks і ns.

Змінено в версії 3.6: Приймає path-like object.

os.walk(top, topdown=True, onerror=None, followlinks=False)

Згенеруйте імена файлів у дереві каталогів, проходячи по дереву зверху вниз або знизу вгору. Для кожного каталогу в дереві, що знаходиться в каталозі top (включно з самим top), він дає 3-кортеж (dirpath, dirnames, filenames).

dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..'). filenames is a list of the names of the non-directory files in dirpath. Note that the names in the lists contain no path components. To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath, name). Whether or not the lists are sorted depends on the file system. If a file is removed from or added to the dirpath directory during generating the lists, whether a name for that file be included is unspecified.

Якщо необов’язковий аргумент topdown має значення True або не вказано, трійка для каталогу генерується перед потрійками для будь-якого з його підкаталогів (каталоги генеруються зверху вниз). Якщо topdown має значення False, трійка для каталогу генерується після трійок для всіх його підкаталогів (каталоги генеруються знизу вгору). Незалежно від значення topdown, список підкаталогів витягується до створення кортежів для каталогу та його підкаталогів.

Коли topdown має значення True, абонент може змінювати список dirnames на місці (можливо, використовуючи del або призначення фрагментів), а walk() повертатиметься лише до підкаталогів чиї імена залишаються в dirnames; це можна використовувати для скорочення пошуку, встановлення певного порядку відвідування або навіть для інформування walk() про каталоги, які абонент створює або перейменовує перед тим, як він знову продовжить walk(). Зміна dirnames, коли topdown має значення False, не впливає на поведінку обходу, тому що в режимі знизу вгору каталоги в dirnames генеруються до того, як буде згенеровано сам dirpath.

За замовчуванням помилки виклику scandir() ігноруються. Якщо вказано необов’язковий аргумент 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')  # don't visit CVS directories

У наступному прикладі (проста реалізація shutil.rmtree()) важливий перехід по дереву знизу вгору, rmdir() не дозволяє видаляти каталог, поки він не стане порожнім:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
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.walk з аргументами top, topdown, onerror, followlinks.

Змінено в версії 3.5: Ця функція тепер викликає os.scandir() замість os.listdir(), що робить її швидшою завдяки зменшенню кількості викликів до os.stat().

Змінено в версії 3.6: Приймає path-like object.

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

Це веде себе так само, як walk(), за винятком того, що дає 4-кортеж (dirpath, dirnames, filenames, dirfd), і підтримує dir_fd.

dirpath, dirnames і filenaname ідентичні виводу walk(), а dirfd є дескриптором файлу, який посилається на каталог dirpath.

Ця функція завжди підтримує шляхи відносно дескрипторів каталогу і не наступні символічні посилання. Проте зауважте, що, на відміну від інших функцій, значенням за замовчуванням fwalk() для follow_symlinks є 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')  # don't visit CVS directories

У наступному прикладі перехід по дереву знизу вгору важливий: rmdir() не дозволяє видаляти каталог, поки каталог не буде порожнім:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
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)

Викликає подію аудиту os.fwalk з аргументами top, topdown, onerror, follow_symlinks, dir_fd.

Наявність: Unix.

Нове в версії 3.3.

Змінено в версії 3.6: Приймає path-like object.

Змінено в версії 3.7: Додано підтримку шляхів bytes.

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

Створіть анонімний файл і поверніть дескриптор файлу, який посилається на нього. flags має бути однією з констант os.MFD_*, доступних у системі (або їх побітовою комбінацією АБО). За замовчуванням новий файловий дескриптор є non-inheritable.

Ім’я, указане в name, використовується як ім’я файлу та відображатиметься як ціль відповідного символічного посилання в каталозі /proc/self/fd/. Ім’я, що відображається, завжди має префікс memfd: і служить лише для цілей налагодження. Імена не впливають на поведінку файлового дескриптора, тому кілька файлів можуть мати однакові назви без будь-яких побічних ефектів.

Availability: Linux 3.17 or newer with glibc 2.27 or newer.

Нове в версії 3.8.

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

Ці позначки можна передати в memfd_create().

Availability: Linux 3.17 or newer with glibc 2.27 or newer. The MFD_HUGE* flags are only available since Linux 4.14.

Нове в версії 3.8.

Розширені атрибути Linux

Нове в версії 3.3.

Усі ці функції доступні лише в Linux.

os.getxattr(path, attribute, *, follow_symlinks=True)

Повертає значення розширеного атрибута файлової системи attribute для path. attribute може бути байтом або str (прямо чи опосередковано через інтерфейс PathLike). Якщо це str, воно закодовано з кодуванням файлової системи.

Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.

Викликає подію аудиту os.getxattr з аргументами path, attribute.

Змінено в версії 3.6: Приймає path-like object для path і attribute.

os.listxattr(path=None, *, follow_symlinks=True)

Повертає список розширених атрибутів файлової системи за шляхом. Атрибути в списку представлені як рядки, декодовані за допомогою кодування файлової системи. Якщо path має значення None, listxattr() перевірить поточний каталог.

Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.

Викликає подію аудиту os.listxattr з аргументом path.

Змінено в версії 3.6: Приймає path-like object.

os.removexattr(path, attribute, *, follow_symlinks=True)

Removes the extended filesystem attribute attribute from path. attribute should be bytes or str (directly or indirectly through the PathLike interface). If it is a string, it is encoded with the filesystem encoding.

Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.

Викликає подію аудиту os.removexattr з аргументами path, attribute.

Змінено в версії 3.6: Приймає path-like object для path і attribute.

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

Set the extended filesystem attribute attribute on path to value. attribute must be a bytes or str with no embedded NULs (directly or indirectly through the PathLike interface). If it is a str, it is encoded with the filesystem encoding. flags may be XATTR_REPLACE or XATTR_CREATE. If XATTR_REPLACE is given and the attribute does not exist, ENODATA will be raised. If XATTR_CREATE is given and the attribute already exists, the attribute will not be created and EEXISTS will be raised.

Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.

Примітка

Помилка у версіях ядра Linux до 2.6.39 спричинила ігнорування аргументу flags у деяких файлових системах.

Викликає подію аудиту os.setxattr з аргументами path, attribute, value, flags.

Змінено в версії 3.6: Приймає path-like object для path і attribute.

os.XATTR_SIZE_MAX

Максимальний розмір значення розширеного атрибута. На даний момент це 64 КіБ на Linux.

os.XATTR_CREATE

Це можливе значення для аргументу flags у setxattr(). Це вказує, що операція повинна створити атрибут.

os.XATTR_REPLACE

Це можливе значення для аргументу flags у setxattr(). Це означає, що операція повинна замінити існуючий атрибут.

Управління процесами

Ці функції можна використовувати для створення процесів і керування ними.

Різні функції exec* приймають список аргументів для нової програми, завантаженої в процес. У кожному випадку перший із цих аргументів передається новій програмі як її власне ім’я, а не як аргумент, який користувач міг ввести в командному рядку. Для програміста на C це argv[0], що передається до main() програми. Наприклад, os.execv('/bin/echo', ['foo', 'bar']) виведе лише bar на стандартному виводі; foo буде проігноровано.

os.abort()

Згенерувати сигнал SIGABRT для поточного процесу. В Unix типовою поведінкою є створення дампа ядра; у Windows процес негайно повертає код виходу 3. Майте на увазі, що виклик цієї функції не викличе обробник сигналів Python, зареєстрований для SIGABRT з signal.signal().

os.add_dll_directory(path)

Додайте шлях до шляху пошуку DLL.

Цей шлях пошуку використовується під час вирішення залежностей для імпортованих модулів розширення (сам модуль вирішується за допомогою sys.path), а також за допомогою ctypes.

Видаліть каталог, викликавши close() для повернутого об’єкта або використовуючи його в операторі with.

Перегляньте документацію Microsoft, щоб дізнатися більше про те, як завантажуються DLL.

Викликає подію аудиту os.add_dll_directory з аргументом path.

Наявність: Windows.

Нове в версії 3.8: Попередні версії CPython вирішували DLL, використовуючи типову поведінку для поточного процесу. Це призвело до неузгодженості, наприклад лише іноді пошук PATH або поточного робочого каталогу, а функції ОС, такі як AddDllDirectory, не мали ефекту.

У версії 3.8 два основні способи завантаження бібліотек DLL тепер явно замінюють поведінку всього процесу, щоб забезпечити узгодженість. Перегляньте нотатки щодо портування, щоб отримати інформацію щодо оновлення бібліотек.

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* функція.

The «l» and «v» variants of the exec* functions differ in how command-line arguments are passed. The «l» variants are perhaps the easiest to work with if the number of parameters is fixed when the code is written; the individual parameters simply become additional parameters to the execl*() functions. The «v» variants are good when the number of parameters is variable, with the arguments being passed in a list or tuple as the args parameter. In either case, the arguments to the child process should start with the name of the command being run, but this is not enforced.

The variants which include a «p» near the end (execlp(), execlpe(), execvp(), and execvpe()) will use the PATH environment variable to locate the program file. When the environment is being replaced (using one of the exec*e variants, discussed in the next paragraph), the new environment is used as the source of the PATH variable. The other variants, execl(), execle(), execv(), and execve(), will not use the PATH variable to locate the executable; path must contain an appropriate absolute or relative path.

Для execle(), execlpe(), execve() і execvpe() (зауважте, що всі вони закінчуються на «e»), параметр env має бути зіставленням який використовується для визначення змінних середовища для нового процесу (вони використовуються замість середовища поточного процесу); функції execl(), execlp(), execv() і execvp() змушують новий процес успадковувати середовище поточного процесу.

Для execve() на деяких платформах шлях також може бути вказаний як дескриптор відкритого файлу. Ця функція може не підтримуватися на вашій платформі; ви можете перевірити, чи він доступний, за допомогою os.supports_fd. Якщо він недоступний, його використання призведе до помилки NotImplementedError.

Викликає подію аудиту os.exec з аргументами path, args, env.

Наявність: Unix, Windows.

Нове в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу для execve().

Змінено в версії 3.6: Приймає path-like object.

os._exit(n)

Вийдіть із процесу зі статусом n, без виклику обробників очищення, очищення буферів stdio тощо.

Примітка

The standard way to exit is sys.exit(n). _exit() should normally only be used in the child process after a fork().

Наступні коди виходу визначені та можуть використовуватися з _exit(), хоча вони не є обов’язковими. Зазвичай вони використовуються для системних програм, написаних мовою Python, таких як зовнішня програма доставки команд поштового сервера.

Примітка

Деякі з них можуть бути недоступні на всіх платформах Unix, оскільки існують певні відмінності. Ці константи визначені там, де вони визначені базовою платформою.

os.EX_OK

Exit code that means no error occurred.

Наявність: 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

Код виходу, який означає, що виявлено помилку операційної системи, наприклад неможливість розгалуження або створення каналу.

Наявність: 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, мають відомі проблеми під час використання fork() із потоку.

Викликає подію аудиту os.fork без аргументів.

Змінено в версії 3.8: Виклик fork() у підінтерпретаторі більше не підтримується (виникає RuntimeError).

Попередження

See ssl for applications that use the SSL module with fork().

Наявність: Unix.

os.forkpty()

Розгалужуйте дочірній процес, використовуючи новий псевдотермінал як керуючий термінал дочірнього процесу. Повертає пару (pid, fd), де pid є 0 у дочірньому, ідентифікатор нового дочірнього процесу в батьківському, а fd є дескриптором файлу головного кінця псевдотермінал. Для більш портативного підходу використовуйте модуль pty. У разі виникнення помилки виникає OSError.

Викликає подію аудиту os.forkpty без аргументів.

Змінено в версії 3.8: Виклик forkpty() у підінтерпретаторі більше не підтримується (виникає RuntimeError).

Availability: some flavors of Unix.

os.kill(pid, sig)

Надішліть сигнал sig процесу pid. Константи для конкретних сигналів, доступних на хост-платформі, визначаються в модулі signal.

Windows: The signal.CTRL_C_EVENT and signal.CTRL_BREAK_EVENT signals are special signals which can only be sent to console processes which share a common console window, e.g., some subprocesses. Any other value for sig will cause the process to be unconditionally killed by the TerminateProcess API, and the exit code will be set to sig. The Windows version of kill() additionally takes process handles to be killed.

Дивіться також signal.pthread_kill().

Викликає подію аудиту os.kill з аргументами pid, sig.

Нове в версії 3.2: Windows support.

os.killpg(pgid, sig)

Надішліть сигнал sig до групи процесів pgid.

Викликає подію аудиту os.killpg з аргументами pgid, sig.

Наявність: Unix.

os.nice(increment)

Додайте приріст до «витонченості» процесу. Поверніть нову привабливість.

Наявність: Unix.

os.pidfd_open(pid, flags=0)

Return a file descriptor referring to the process pid. This descriptor can be used to perform process management without races and signals. The flags argument is provided for future extensions; no flag values are currently defined.

Додаткову інформацію можна знайти на сторінці довідки pidfd_open(2).

Availability: Linux 5.3+

Нове в версії 3.9.

os.plock(op)

Блокування сегментів програми в пам’яті. Значення op (визначене в <sys/lock.h>) визначає, які сегменти заблоковано.

Наявність: Unix.

os.popen(cmd, mode='r', buffering=-1)

Open a pipe to or from command cmd. The return value is an open file object connected to the pipe, which can be read or written depending on whether mode is 'r' (default) or 'w'. The buffering argument has the same meaning as the corresponding argument to the built-in open() function. The returned file object reads or writes text strings rather than bytes.

Метод close повертає None, якщо підпроцес завершився успішно, або код повернення підпроцесу, якщо сталася помилка. У системах POSIX, якщо код повернення позитивний, він представляє значення, що повертається процесом, зміщене вліво на один байт. Якщо код повернення від’ємний, це означає, що процес було припинено за допомогою сигналу, поданого зведеним значенням коду повернення. (Наприклад, значення, що повертається, може бути - signal.SIGKILL, якщо підпроцес було закрито.) У системах Windows значення, що повертається, містить цілочисельний код повернення зі знаком від дочірнього процесу.

В Unix waitstatus_to_exitcode() можна використовувати для перетворення результату методу close (статус виходу) у код виходу, якщо він не None. У Windows результатом методу close є безпосередньо код виходу (або None).

Це реалізовано за допомогою subprocess.Popen; перегляньте документацію цього класу, щоб дізнатися про більш потужні способи керування підпроцесами та спілкування з ними.

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Wraps the posix_spawn() C library API for use from Python.

Більшість користувачів повинні використовувати subprocess.run() замість posix_spawn().

The positional-only arguments path, args, and env are similar to execve().

Параметр path — це шлях до виконуваного файлу. Шлях має містити каталог. Використовуйте posix_spawnp(), щоб передати виконуваний файл без каталогу.

Аргумент file_actions може бути послідовністю кортежів, що описують дії, які потрібно виконати над певними дескрипторами файлів у дочірньому процесі між кроками fork() і exec() реалізації бібліотеки C. Перший елемент у кожному кортежі має бути одним із трьох наведених нижче індикаторів типу, що описують інші елементи кортежу:

os.POSIX_SPAWN_OPEN

(os.POSIX_SPAWN_OPEN, fd, шлях, прапори, режим)

Виконує os.dup2(os.open(path, flags, mode), fd).

os.POSIX_SPAWN_CLOSE

(os.POSIX_SPAWN_CLOSE, fd)

Виконує os.close(fd).

os.POSIX_SPAWN_DUP2

(os.POSIX_SPAWN_DUP2, fd, new_fd)

Виконує os.dup2(fd, new_fd).

These tuples correspond to the C library posix_spawn_file_actions_addopen(), posix_spawn_file_actions_addclose(), and posix_spawn_file_actions_adddup2() API calls used to prepare for the posix_spawn() call itself.

The setpgroup argument will set the process group of the child to the value specified. If the value specified is 0, the child’s process group ID will be made the same as its process ID. If the value of setpgroup is not set, the child will inherit the parent’s process group ID. This argument corresponds to the C library POSIX_SPAWN_SETPGROUP flag.

If the resetids argument is True it will reset the effective UID and GID of the child to the real UID and GID of the parent process. If the argument is False, then the child retains the effective UID and GID of the parent. In either case, if the set-user-ID and set-group-ID permission bits are enabled on the executable file, their effect will override the setting of the effective UID and GID. This argument corresponds to the C library POSIX_SPAWN_RESETIDS flag.

If the setsid argument is True, it will create a new session ID for posix_spawn. setsid requires POSIX_SPAWN_SETSID or POSIX_SPAWN_SETSID_NP flag. Otherwise, NotImplementedError is raised.

The setsigmask argument will set the signal mask to the signal set specified. If the parameter is not used, then the child inherits the parent’s signal mask. This argument corresponds to the C library POSIX_SPAWN_SETSIGMASK flag.

The sigdef argument will reset the disposition of all signals in the set specified. This argument corresponds to the C library POSIX_SPAWN_SETSIGDEF flag.

The scheduler argument must be a tuple containing the (optional) scheduler policy and an instance of sched_param with the scheduler parameters. A value of None in the place of the scheduler policy indicates that is not being provided. This argument is a combination of the C library POSIX_SPAWN_SETSCHEDPARAM and POSIX_SPAWN_SETSCHEDULER flags.

Викликає подію аудиту os.posix_spawn з аргументами path, argv, env.

Нове в версії 3.8.

Наявність: Unix.

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Wraps the posix_spawnp() C library API for use from Python.

Подібно до posix_spawn(), за винятком того, що система шукає виконуваний файл у списку каталогів, визначених змінною середовища PATH (так само, як і для execvp(3) ).

Викликає подію аудиту os.posix_spawn з аргументами path, argv, env.

Нове в версії 3.8.

Availability: See posix_spawn() documentation.

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

Зареєструйте виклики, які будуть виконуватися, коли новий дочірній процес розгалужується за допомогою os.fork() або аналогічного API клонування процесу. Параметри є необов’язковими та містять лише ключові слова. Кожен із них визначає окремий пункт виклику.

  • before — це функція, яка викликається перед розгалуженням дочірнього процесу.

  • after_in_parent — це функція, яка викликається з батьківського процесу після розгалуження дочірнього процесу.

  • after_in_child — це функція, яка викликається з дочірнього процесу.

Ці виклики здійснюються лише в тому випадку, якщо очікується, що контроль повернеться до інтерпретатора Python. Типовий запуск підпроцесу subprocess не запустить їх, оскільки дитина не збирається повторно входити в інтерпретатор.

Функції, зареєстровані для виконання перед розгалуженням, викликаються у зворотному порядку реєстрації. Функції, зареєстровані для виконання після розгалуження (або в батьківському, або в дочірньому) викликаються в порядку реєстрації.

Зауважте, що виклики fork(), здійснені стороннім C-кодом, можуть не викликати ці функції, якщо тільки вони явно не викликають PyOS_BeforeFork(), PyOS_AfterFork_Parent() і PyOS_AfterFork_Child().

Немає способу скасувати реєстрацію функції.

Наявність: Unix.

Нове в версії 3.7.

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)

Виконайте шлях програми в новому процесі.

(Зверніть увагу, що модуль subprocess надає потужніші можливості для створення нових процесів і отримання їх результатів; використання цього модуля є кращим, ніж використання цих функцій. Особливо перевірте розділ Заміна старих функцій модулем subprocess.)

Якщо mode P_NOWAIT, ця функція повертає ідентифікатор процесу нового процесу; якщо mode дорівнює P_WAIT, повертає код виходу процесу, якщо він завершується нормально, або -signal, де signal є сигналом, який зупинив процес. У Windows ідентифікатор процесу фактично буде ідентифікатором процесу, тому його можна використовувати з функцією waitpid().

Зверніть увагу на VxWorks, ця функція не повертає -signal, коли новий процес завершується. Натомість викликає виняток OSError.

The «l» and «v» variants of the spawn* functions differ in how command-line arguments are passed. The «l» variants are perhaps the easiest to work with if the number of parameters is fixed when the code is written; the individual parameters simply become additional parameters to the spawnl*() functions. The «v» variants are good when the number of parameters is variable, with the arguments being passed in a list or tuple as the args parameter. In either case, the arguments to the child process must start with the name of the command being run.

Варіанти, які включають друге «p» у кінці (spawnlp(), spawnlpe(), spawnvp() і spawnvpe()), використовуватимуть PATH змінна середовища для пошуку файлу програми. Під час заміни середовища (з використанням одного з варіантів spawn*e, розглянутих у наступному параграфі), нове середовище використовується як джерело змінної PATH. Інші варіанти, spawnl(), spawnle(), spawnv() і spawnve(), не використовуватимуть змінну PATH для пошуку виконуваного файлу; path повинен містити відповідний абсолютний або відносний шлях.

Для spawnle(), spawnlpe(), spawnve() і spawnvpe() (зауважте, що всі вони закінчуються на «e»), параметр env має бути відображенням який використовується для визначення змінних середовища для нового процесу (вони використовуються замість середовища поточного процесу); функції 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)

Викликає подію аудиту os.spawn з аргументами mode, path, args, env.

Availability: Unix, Windows. spawnlp(), spawnlpe(), spawnvp() and spawnvpe() are not available on Windows. spawnle() and spawnve() are not thread-safe on Windows; we advise you to use the subprocess module instead.

Змінено в версії 3.6: Приймає path-like object.

os.P_NOWAIT
os.P_NOWAITO

Possible values for the mode parameter to the spawn* family of functions. If either of these values is given, the spawn*() functions will return as soon as the new process has been created, with the process id as the return value.

Наявність: Unix, Windows.

os.P_WAIT

Possible value for the mode parameter to the spawn* family of functions. If this is given as mode, the spawn*() functions will not return until the new process has run to completion and will return the exit code of the process the run is successful, or -signal if a signal kills the process.

Наявність: Unix, Windows.

os.P_DETACH
os.P_OVERLAY

Можливі значення для параметра mode для сімейства функцій spawn*. Вони менш портативні, ніж перелічені вище. P_DETACH подібний до P_NOWAIT, але новий процес від’єднується від консолі процесу, що викликає. Якщо P_OVERLAY використовується, поточний процес буде замінено; функція spawn* не повернеться.

Наявність: Windows.

os.startfile(path[, operation])

Запустіть файл із пов’язаною програмою.

When operation is not specified or 'open', this acts like double-clicking the file in Windows Explorer, or giving the file name as an argument to the start command from the interactive command shell: the file is opened with whatever application (if any) its extension is associated.

When another operation is given, it must be a «command verb» that specifies what should be done with the file. Common verbs documented by Microsoft are 'print' and 'edit' (to be used on files) as well as 'explore' and 'find' (to be used on directories).

startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status. The path parameter is relative to the current directory. If you want to use an absolute path, make sure the first character is not a slash ('/'); the underlying Win32 ShellExecute() function doesn’t work if it is. Use the os.path.normpath() function to ensure that the path is properly encoded for Win32.

To reduce interpreter startup overhead, the Win32 ShellExecute() function is not resolved until this function is first called. If the function cannot be resolved, NotImplementedError will be raised.

Викликає подію аудиту os.startfile з аргументами path, operation.

Наявність: Windows.

os.system(command)

Виконайте команду (рядок) у підоболонці. Це реалізується шляхом виклику стандартної функції C system() і має ті самі обмеження. Зміни в sys.stdin тощо не відображаються в середовищі виконуваної команди. Якщо команда генерує будь-який вихід, він буде надісланий до стандартного потоку виводу інтерпретатора. Стандарт C не визначає значення значення, що повертається функцією C, тому значення, що повертається функцією Python, залежить від системи.

В Unix значення, що повертається, є статусом завершення процесу, закодованим у форматі, указаному для wait().

У Windows повертається значення, яке повертає системна оболонка після виконання команди. Оболонка визначається змінною середовища Windows COMSPEC: зазвичай це cmd.exe, яка повертає статус завершення виконання команди; у системах, які використовують нерідну оболонку, зверніться до документації вашої оболонки.

Модуль subprocess надає потужніші можливості для створення нових процесів і отримання їх результатів; використовувати цей модуль краще, ніж використовувати цю функцію. Перегляньте розділ Заміна старих функцій модулем subprocess в документації subprocess, щоб знайти кілька корисних рецептів.

В Unix waitstatus_to_exitcode() можна використовувати для перетворення результату (статус виходу) у код виходу. У Windows результатом є безпосередньо код виходу.

Викликає подію аудиту os.system з аргументом command.

Наявність: Unix, Windows.

os.times()

Повертає поточний глобальний час процесу. Повернене значення є об’єктом із п’ятьма атрибутами:

  • user - час користувача

  • system - системний час

  • children_user - час користувача всіх дочірніх процесів

  • children_system - системний час усіх дочірніх процесів

  • elapsed - реальний час, що минув від фіксованої точки в минулому

Для зворотної сумісності цей об’єкт також поводиться як п’ять кортежів, що містять user, system, children_user, children_system і минало в такому порядку.

See the Unix manual page times(2) and times(3) manual page on Unix or the GetProcessTimes MSDN on Windows. On Windows, only user and system are known; the other attributes are zero.

Наявність: Unix, Windows.

Змінено в версії 3.3: Тип повернення змінено з кортежу на кортежний об’єкт з іменованими атрибутами.

os.wait()

Зачекайте на завершення дочірнього процесу та поверніть кортеж, що містить його pid та індикацію статусу виходу: 16-розрядне число, чий молодший байт є номером сигналу, що вбив процес, а старший байт є статусом виходу (якщо сигнал число дорівнює нулю); старший біт молодшого байта встановлюється, якщо було створено основний файл.

waitstatus_to_exitcode() можна використовувати для перетворення статусу виходу в код виходу.

Наявність: Unix.

Дивись також

waitpid() can be used to wait for the completion of a specific child process and has more options.

os.waitid(idtype, id, options)

Wait for the completion of one or more child processes. idtype can be P_PID, P_PGID, P_ALL, or P_PIDFD on Linux. id specifies the pid to wait on. options is constructed from the ORing of one or more of WEXITED, WSTOPPED or WCONTINUED and additionally may be ORed with WNOHANG or WNOWAIT. The return value is an object representing the data contained in the siginfo_t structure, namely: si_pid, si_uid, si_signo, si_status, si_code or None if WNOHANG is specified and there are no children in a waitable state.

Наявність: Unix.

Нове в версії 3.3.

os.P_PID
os.P_PGID
os.P_ALL

These are the possible values for idtype in waitid(). They affect how id is interpreted.

Наявність: Unix.

Нове в версії 3.3.

os.P_PIDFD

This is a Linux-specific idtype that indicates that id is a file descriptor that refers to a process.

Availability: Linux 5.4+

Нове в версії 3.9.

os.WEXITED
os.WSTOPPED
os.WNOWAIT

Flags that can be used in options in waitid() that specify what child signal to wait for.

Наявність: Unix.

Нове в версії 3.3.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

These are the possible values for si_code in the result returned by waitid().

Наявність: Unix.

Нове в версії 3.3.

Змінено в версії 3.9: Додано значення CLD_KILLED і CLD_STOPPED.

os.waitpid(pid, options)

Деталі цієї функції відрізняються в Unix і Windows.

В Unix: зачекайте на завершення дочірнього процесу, заданого ідентифікатором процесу pid, і поверніть кортеж, що містить ідентифікатор його процесу та вказівку статусу виходу (закодовано як для wait()). На семантику виклику впливає значення цілого числа options, яке має бути 0 для нормальної роботи.

Якщо pid більший за 0, waitpid() запитує інформацію про статус для цього конкретного процесу. Якщо pid дорівнює 0, запит стосується статусу будь-якого дочірнього елемента в групі поточного процесу. Якщо pid має значення -1, запит стосується будь-якого дочірнього процесу поточного процесу. Якщо pid менший за -1, статус запитується для будь-якого процесу в групі процесів -pid (абсолютне значення pid).

An OSError is raised with the value of errno when the syscall returns -1.

У Windows: дочекайтеся завершення процесу, заданого дескриптором процесу pid, і поверніть кортеж, що містить pid, а його статус виходу зміщений вліво на 8 біт (зміщення полегшує використання функції на різних платформах). pid менше або дорівнює 0 не має особливого значення в Windows і викликає виключення. Значення цілого параметра не впливає. pid може посилатися на будь-який процес, ідентифікатор якого відомий, не обов’язково дочірній процес. Функції spawn*, викликані за допомогою P_NOWAIT, повертають відповідні дескриптори процесу.

waitstatus_to_exitcode() можна використовувати для перетворення статусу виходу в код виходу.

Змінено в версії 3.5: Якщо системний виклик перервано, а обробник сигналу не викликає виключення, функція тепер повторює системний виклик замість того, щоб викликати виняток InterruptedError (перегляньте PEP 475 для обґрунтування).

os.wait3(options)

Similar to waitpid(), except no process id argument is given and a 3-element tuple containing the child’s process id, exit status indication, and resource usage information is returned. Refer to resource.getrusage() for details on resource usage information. The option argument is the same as that provided to waitpid() and wait4().

waitstatus_to_exitcode() можна використовувати для перетворення статусу виходу в код виходу.

Наявність: Unix.

os.wait4(pid, options)

Similar to waitpid(), except a 3-element tuple, containing the child’s process id, exit status indication, and resource usage information is returned. Refer to resource.getrusage() for details on resource usage information. The arguments to wait4() are the same as those provided to waitpid().

waitstatus_to_exitcode() можна використовувати для перетворення статусу виходу в код виходу.

Наявність: Unix.

os.waitstatus_to_exitcode(status)

Перетворення статусу очікування на код виходу.

В Unix:

  • Якщо процес закінчився нормально (якщо WIFEXITED(статус) має значення true), повертає статус виходу процесу (повертає WEXITSTATUS(статус)): результат більше або дорівнює 0.

  • Якщо процес було припинено через сигнал (якщо WIFSIGNALED(status) має значення true), повертає -signum, де signum — це номер сигналу, який спричинив завершення процесу (повертає - WTERMSIG(статус)): результат менше 0.

  • Інакше викличте ValueError.

У Windows повертає статус, зміщений праворуч на 8 біт.

В Unix, якщо процес відстежується або якщо waitpid() було викликано з опцією WUNTRACED, абонент повинен спочатку перевірити, чи WIFSTOPPED(status) є істинним. Цю функцію не можна викликати, якщо WIFSTOPPED(статус) має значення true.

Дивись також

Функції WIFEXITED(), WEXITSTATUS(), WIFSIGNALED(), WTERMSIG(), WIFSTOPPED(), WSTOPSIG().

Нове в версії 3.9.

os.WNOHANG

The option for waitpid() to return immediately if no child process status is available immediately. The function returns (0, 0) in this case.

Наявність: Unix.

os.WCONTINUED

This option causes child processes to be reported if they have been continued from a job control stop since their status was last reported.

Availability: some Unix systems.

os.WUNTRACED

This option causes child processes to be reported if they have been stopped but their current state has not been reported since they were stopped.

Наявність: Unix.

Наступні функції приймають код стану процесу, який повертає system(), wait() або waitpid() як параметр. Вони можуть бути використані для визначення розташування процесу.

os.WCOREDUMP(status)

Повертає True, якщо для процесу було створено дамп ядра, інакше повертає False.

Цю функцію слід використовувати, лише якщо WIFSIGNALED() має значення true.

Наявність: Unix.

os.WIFCONTINUED(status)

Return True if a stopped child has been resumed by delivery of SIGCONT (if the process has been continued from a job control stop), otherwise return False.

Перегляньте параметр WCONTINUED.

Наявність: Unix.

os.WIFSTOPPED(status)

Повертає True, якщо процес було зупинено доставкою сигналу, інакше повертає False.

WIFSTOPPED() повертає True, лише якщо виклик waitpid() було виконано за допомогою параметра WUNTRACED або коли процес відстежується (див. ptrace(2) ).

Наявність: Unix.

os.WIFSIGNALED(status)

Повертає True, якщо процес було припинено сигналом, інакше повертає False.

Наявність: Unix.

os.WIFEXITED(status)

Повертає True, якщо процес завершився нормально, тобто викликом exit() чи _exit(), або шляхом повернення з main(); інакше повертає False.

Наявність: Unix.

os.WEXITSTATUS(status)

Повернути статус виходу процесу.

Цю функцію слід використовувати, лише якщо WIFEXITED() має значення true.

Наявність: Unix.

os.WSTOPSIG(status)

Повернути сигнал, який спричинив зупинку процесу.

Цю функцію слід використовувати, лише якщо WIFSTOPPED() має значення true.

Наявність: Unix.

os.WTERMSIG(status)

Повертає номер сигналу, який викликав завершення процесу.

Цю функцію слід використовувати, лише якщо WIFSIGNALED() має значення true.

Наявність: Unix.

Інтерфейс до планувальника

Ці функції контролюють, як процес розподіляє процесорний час операційною системою. Вони доступні лише на деяких платформах Unix. Щоб отримати детальнішу інформацію, зверніться до сторінок довідки 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 є однією з наведених вище констант політики планування.

os.sched_get_priority_max(policy)

Отримайте максимальне значення пріоритету для політики. policy є однією з наведених вище констант політики планування.

os.sched_setscheduler(pid, policy, param)

Встановіть політику планування для процесу за допомогою PID pid. pid, рівний 0, означає процес виклику. policy — це одна з наведених вище констант політики планування. param є екземпляром sched_param.

os.sched_getscheduler(pid)

Повернути політику планування для процесу з PID pid. pid, рівний 0, означає процес виклику. Результатом є одна з наведених вище констант політики планування.

os.sched_setparam(pid, param)

Встановіть параметри планування для процесу за допомогою PID pid. pid, рівний 0, означає процес виклику. param є екземпляром sched_param.

os.sched_getparam(pid)

Поверніть параметри планування як екземпляр sched_param для процесу з PID pid. pid, рівний 0, означає процес виклику.

os.sched_rr_get_interval(pid)

Повертайте циклічний квант за секунди для процесу з PID pid. pid, рівний 0, означає процес виклику.

os.sched_yield()

Добровільно відмовитися від ЦП.

os.sched_setaffinity(pid, mask)

Обмежте процес за допомогою PID pid (або поточного процесу, якщо дорівнює нулю) набору ЦП. mask — це ітерація цілих чисел, що представляють набір процесорів, якими має бути обмежений процес.

os.sched_getaffinity(pid)

Return the set of CPUs the process with PID pid (or the current process if zero) is restricted to.

Різна системна інформація

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.cpu_count()

Return the number of CPUs in the system. Returns None if undetermined.

This number is not equivalent to the number of CPUs the current process can use. The number of usable CPUs can be obtained with len(os.sched_getaffinity(0))

Нове в версії 3.4.

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

Альтернативний символ, який використовується операційною системою для розділення компонентів шляху, або «Немає», якщо існує лише один роздільний символ. У системах 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' на всіх платформах.

os.devnull

Шлях до файлу нульового пристрою. Наприклад: '/dev/null для POSIX, 'nul' для Windows. Також доступний через os.path.

os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

Прапори для використання з функціями setdlopenflags() і getdlopenflags(). Що означають різні прапорці, див. сторінку посібника Unix dlopen(3).

Нове в версії 3.3.

Випадкові числа

os.getrandom(size, flags=0)

Отримайте до size випадкових байтів. Функція може повертати менше байтів, ніж вимагається.

Ці байти можна використовувати для заповнення генераторів випадкових чисел у просторі користувача або для криптографічних цілей.

getrandom() покладається на ентропію, зібрану з драйверів пристроїв та інших джерел шуму навколишнього середовища. Невиправдане зчитування великої кількості даних матиме негативний вплив на інших користувачів пристроїв /dev/random і /dev/urandom.

The flags argument is a bit mask that can contain zero or more of the following values ORed together: os.GRND_RANDOM and GRND_NONBLOCK.

See also the Linux getrandom() manual page.

Availability: Linux 3.17 and newer.

Нове в версії 3.6.

os.urandom(size)

Повертає байтовий рядок розміру випадкових байтів, придатних для криптографічного використання.

Ця функція повертає випадкові байти зі специфічного для ОС джерела випадковості. Повернуті дані мають бути досить непередбачуваними для криптографічних програм, хоча їх точна якість залежить від реалізації ОС.

У Linux, якщо доступний системний виклик getrandom(), він використовується в режимі блокування: блокуйте, доки системний пул випадкової ентропії не буде ініціалізовано (128 біт ентропії збирає ядро). Перегляньте PEP 524 для обґрунтування. У Linux функція getrandom() може бути використана для отримання випадкових байтів у неблокуючому режимі (використовуючи прапор GRND_NONBLOCK) або для опитування, доки системний пул випадкової ентропії не буде ініціалізовано.

У Unix-подібній системі випадкові байти зчитуються з пристрою /dev/urandom. Якщо пристрій /dev/urandom недоступний або не читається, виникає виняток NotImplementedError.

On Windows, it will use CryptGenRandom().

Дивись також

Модуль secrets забезпечує функції вищого рівня. Про простий у використанні інтерфейс генератора випадкових чисел, наданий вашою платформою, див. random.SystemRandom.

Змінено в версії 3.6.0: У Linux getrandom() тепер використовується в режимі блокування для підвищення безпеки.

Змінено в версії 3.5.2: У Linux, якщо системний виклик getrandom() блокує (пул ентропії urandom ще не ініціалізовано), поверніться до читання /dev/urandom.

Змінено в версії 3.5: У Linux 3.17 і новіших версіях системний виклик getrandom() тепер використовується, якщо він доступний. У OpenBSD 5.6 і новіших версіях тепер використовується функція C getentropy(). Ці функції уникають використання внутрішнього файлового дескриптора.

os.GRND_NONBLOCK

За замовчуванням під час читання з /dev/random getrandom() блокує, якщо випадкові байти недоступні, а під час читання з /dev/urandom блокує, якщо пул ентропії не має ще не ініціалізовано.

Якщо встановлено прапорець GRND_NONBLOCK, то getrandom() не блокує в цих випадках, а замість цього негайно викликає BlockingIOError.

Нове в версії 3.6.

os.GRND_RANDOM

Якщо цей біт установлено, випадкові байти витягуються з пулу /dev/random замість пулу /dev/urandom.

Нове в версії 3.6.