os
— Miscellaneous operating system interfaces¶
Вихідний код: Lib/os.py
Цей модуль забезпечує портативний спосіб використання залежних від операційної системи функцій. Якщо ви хочете просто прочитати або записати файл, дивіться open()
, якщо ви хочете маніпулювати шляхами, перегляньте модуль os.path
, а якщо ви хочете прочитати всі рядки в усіх файлах у командному рядку перегляньте модуль fileinput
. Для створення тимчасових файлів і каталогів перегляньте модуль tempfile
, а для високорівневої обробки файлів і каталогів дивіться модуль shutil
.
Примітки щодо доступності цих функцій:
Конструкція всіх вбудованих залежних від операційної системи модулів Python така, що, поки доступна та сама функціональність, він використовує той самий інтерфейс; наприклад, функція
os.stat(path)
повертає статистичну інформацію про path у тому самому форматі (який, як виявилося, походить з інтерфейсу POSIX).Розширення, властиві певній операційній системі, також доступні через модуль
os
, але їх використання, звичайно, є загрозою для переносимості.Усі функції, які приймають імена шляхів або файлів, приймають як байти, так і рядкові об’єкти, і в результаті повертають об’єкт того самого типу, якщо повертається шлях або ім’я файлу.
У VxWorks os.popen, os.fork, os.execv і os.spawn*p* не підтримуються.
On WebAssembly platforms
wasm32-emscripten
andwasm32-wasi
, large parts of theos
module are not available or behave differently. API related to processes (e.g.fork()
,execve()
), signals (e.g.kill()
,wait()
), and resources (e.g.nice()
) are not available. Others likegetuid()
andgetpid()
are emulated or stubs.
Примітка
Усі функції в цьому модулі викликають OSError
(або його підкласи) у разі недійсних або недоступних імен файлів і шляхів або інших аргументів, які мають правильний тип, але не приймаються операційною системою.
- os.name¶
Назва імпортованого модуля, залежного від операційної системи. Наразі зареєстровано такі назви:
'posix'
,'nt'
,'java'
.Дивись також
sys.platform
has a finer granularity.os.uname()
gives system-dependent version information.Модуль
platform
забезпечує детальну перевірку ідентичності системи.
Імена файлів, аргументи командного рядка та змінні середовища¶
У Python імена файлів, аргументи командного рядка та змінні середовища представлені за допомогою рядкового типу. У деяких системах декодування цих рядків у та з байтів є необхідним перед передачею їх в операційну систему. Python використовує filesystem encoding and error handler для виконання цього перетворення (див. sys.getfilesystemencoding()
).
filesystem encoding and error handler налаштовуються під час запуску Python за допомогою функції PyConfig_Read()
: див. filesystem_encoding
і filesystem_errors
члени PyConfig
.
Змінено в версії 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.
кодування файлової системи має гарантувати успішне декодування всіх байтів нижче 128. Якщо кодування файлової системи не забезпечує цю гарантію, функції API можуть викликати UnicodeError
.
Дивіться також locale encoding.
Режим Python UTF-8¶
Added in version 3.7: Дивіться PEP 540 для більш детальної інформації.
Режим Python UTF-8 ігнорує кодування locale encoding і змушує використовувати кодування UTF-8:
Використовуйте UTF-8 як кодування файлової системи.
sys.getfilesystemencoding()
returns'utf-8'
.locale.getpreferredencoding()
returns'utf-8'
(the do_setlocale argument has no effect).sys.stdin
,sys.stdout
іsys.stderr
використовують UTF-8 як кодування тексту зsurrogateescape
обробником помилок увімкнено дляsys.stdin
іsys.stdout
(sys.stderr
продовжує використовуватиbackslashreplace
, як це робиться в режимі з урахуванням локалі за замовчуванням)On Unix,
os.device_encoding()
returns'utf-8'
rather than the device encoding.
Зауважте, що стандартні параметри потоку в режимі UTF-8 можна замінити PYTHONIOENCODING
(так само, як вони можуть бути в режимі з урахуванням локалі за замовчуванням).
Як наслідок змін у цих API нижчого рівня, інші API вищого рівня також демонструють іншу поведінку за замовчуванням:
Аргументи командного рядка, змінні середовища та імена файлів декодуються в текст за допомогою кодування UTF-8.
os.fsdecode()
andos.fsencode()
use the UTF-8 encoding.open()
,io.open()
, andcodecs.open()
use the UTF-8 encoding by default. However, they still use the strict error handler by default so that attempting to open a binary file in text mode is likely to raise an exception rather than producing nonsense data.
Режим Python UTF-8 увімкнено, якщо під час запуску Python локаль LC_CTYPE є C
або POSIX
(див. функцію PyConfig_Read()
).
Його можна ввімкнути або вимкнути за допомогою параметра командного рядка -X utf8
і змінної середовища PYTHONUTF8
.
Якщо змінна середовища PYTHONUTF8
не встановлена взагалі, інтерпретатор за замовчуванням використовує поточні параметри локалі, якщо поточна локаль не визначена як застаріла локаль на основі ASCII (як описано для PYTHONCOERCECLOCALE
), а примусове налаштування локалі вимкнено або не працює. У таких застарілих локалях інтерпретатор за замовчуванням увімкне режим UTF-8, якщо немає явних вказівок не робити цього.
Режим Python UTF-8 можна ввімкнути лише під час запуску Python. Його значення можна прочитати з sys.flags.utf8_mode
.
Дивіться також режим UTF-8 у Windows і filesystem encoding and error handler.
Дивись також
- PEP 686
Python 3.15 will make Режим Python UTF-8 default.
Параметри процесу¶
Ці функції та елементи даних надають інформацію та діють щодо поточного процесу та користувача.
- os.ctermid()¶
Повертає ім’я файлу, що відповідає керуючому терміналу процесу.
Availability: Unix, not Emscripten, not WASI.
- os.environ¶
Об’єкт mapping, де ключі та значення є рядками, які представляють середовище процесу. Наприклад,
environ['HOME']
є шляхом до вашого домашнього каталогу (на деяких платформах) і еквівалентнийgetenv("HOME")
в C.Це зіставлення фіксується під час першого імпорту модуля
os
, зазвичай під час запуску Python як частина обробкиsite.py
. Зміни в середовищі, внесені після цього часу, не відображаються вos.environ
, за винятком змін, внесених безпосередньо шляхом модифікаціїos.environ
.Це відображення можна використовувати для зміни середовища, а також запиту середовища.
putenv()
буде викликано автоматично, коли відображення буде змінено.В Unix ключі та значення використовують
sys.getfilesystemencoding()
і'surrogateescape'
обробник помилок. Використовуйтеenvironb
, якщо ви хочете використати інше кодування.On Windows, the keys are converted to uppercase. This also applies when getting, setting, or deleting an item. For example,
environ['monty'] = 'python'
maps the key'MONTY'
to the value'python'
.Примітка
Безпосередній виклик
putenv()
не змінюєos.environ
, тому краще змінитиos.environ
.Примітка
On some platforms, including FreeBSD and macOS, setting
environ
may cause memory leaks. Refer to the system documentation forputenv()
.Ви можете видалити елементи в цьому відображенні, щоб скасувати налаштування змінних середовища.
unsetenv()
буде викликано автоматично, коли елемент буде видалено зos.environ
, а також під час виклику одного з методівpop()
абоclear()
.Змінено в версії 3.9: Оновлено для підтримки операторів злиття (
|
) і оновлення (|=
) PEP 584.
- os.environb¶
Байтова версія
environ
: об’єкт mapping, де і ключі, і значення є об’єктамиbytes
, що представляють середовище процесу.environ
іenvironb
синхронізуються (модифікаціяenvironb
оновлюєenviron
, і навпаки).environb
is only available ifsupports_bytes_environ
isTrue
.Added in version 3.2.
Змінено в версії 3.9: Оновлено для підтримки операторів злиття (
|
) і оновлення (|=
) PEP 584.
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
Ці функції описані в Файли та каталоги.
- os.fsencode(filename)¶
Закодуйте path-like ім’я файлу до filesystem encoding and error handler; повертає
bytes
без змін.fsdecode()
є зворотною функцією.Added in version 3.2.
Змінено в версії 3.6: Додано підтримку прийому об’єктів, що реалізують інтерфейс
os.PathLike
.
- os.fsdecode(filename)¶
Декодуйте path-like filename з filesystem encoding and error handler; повертає
str
без змін.fsencode()
є зворотною функцією.Added in version 3.2.
Змінено в версії 3.6: Додано підтримку прийому об’єктів, що реалізують інтерфейс
os.PathLike
.
- os.fspath(path)¶
Повертає представлення файлової системи шляху.
Якщо передано
str
абоbytes
, воно повертається без змін. В іншому випадку викликається__fspath__()
і повертається його значення, якщо це об’єктstr
абоbytes
. У всіх інших випадках виникаєTypeError
.Added in version 3.6.
- class os.PathLike¶
abstract base class для об’єктів, що представляють шлях файлової системи, напр.
pathlib.PurePath
.Added in version 3.6.
- os.getenv(key, default=None)¶
Return the value of the environment variable key as a string if it exists, or default if it doesn’t. key is a string. Note that since
getenv()
usesos.environ
, the mapping ofgetenv()
is similarly also captured on import, and the function may not reflect future environment changes.В Unix ключі та значення декодуються за допомогою
sys.getfilesystemencoding()
і'surrogateescape'
обробника помилок. Використовуйтеos.getenvb()
, якщо ви хочете використати інше кодування.Availability: Unix, Windows.
- os.getenvb(key, default=None)¶
Return the value of the environment variable key as bytes if it exists, or default if it doesn’t. key must be bytes. Note that since
getenvb()
usesos.environb
, the mapping ofgetenvb()
is similarly also captured on import, and the function may not reflect future environment changes.getenvb()
is only available ifsupports_bytes_environ
isTrue
.Availability: Unix.
Added in version 3.2.
- os.get_exec_path(env=None)¶
Повертає список каталогів, у яких здійснюватиметься пошук іменованого виконуваного файлу, схожого на оболонку, під час запуску процесу. env, якщо вказано, має бути словником змінної середовища для пошуку ШЛЯХУ. За умовчанням, коли env має значення
None
, використовуєтьсяenviron
.Added in version 3.2.
- os.getegid()¶
Повертає ефективний ідентифікатор групи поточного процесу. Це відповідає біту «set id» у файлі, який виконується в поточному процесі.
Availability: Unix, not Emscripten, not WASI.
- os.geteuid()¶
Повернути ефективний ідентифікатор користувача поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.getgid()¶
Повертає справжній ідентифікатор групи поточного процесу.
Availability: Unix.
The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.
- 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.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.getgroups()¶
Повернути список ідентифікаторів додаткових груп, пов’язаних із поточним процесом.
Availability: Unix, not Emscripten, not WASI.
Примітка
On macOS,
getgroups()
behavior differs somewhat from other Unix platforms. If the Python interpreter was built with a deployment target of10.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 tosetgroups()
if suitably privileged. If built with a deployment target greater than10.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 tosetgroups()
, and its length is not limited to 16. The deployment target value,MACOSX_DEPLOYMENT_TARGET
, can be obtained withsysconfig.get_config_var()
.
- os.getlogin()¶
Повертає ім’я користувача, який увійшов у систему на керуючому терміналі процесу. Для більшості цілей корисніше використовувати
getpass.getuser()
, оскільки останній перевіряє змінні середовищаLOGNAME
абоUSERNAME
, щоб дізнатися, хто є користувачем, і повертається доpwd.getpwuid(os.getuid())[0]
, щоб отримати ім’я для входу поточного реального ідентифікатора користувача.Availability: Unix, Windows, not Emscripten, not WASI.
- os.getpgid(pid)¶
Повертає ідентифікатор групи процесу з ідентифікатором процесу pid. Якщо pid дорівнює 0, повертається ідентифікатор групи поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.getpgrp()¶
Повертає ідентифікатор поточної групи процесів.
Availability: Unix, not Emscripten, not WASI.
- os.getpid()¶
Повернути ідентифікатор поточного процесу.
The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.
- os.getppid()¶
Повертає ідентифікатор батьківського процесу. Коли батьківський процес завершив роботу, в Unix повертається ідентифікатор процесу ініціалізації (1), у Windows це все ще той самий ідентифікатор, який може вже повторно використовуватися іншим процесом.
Availability: Unix, Windows, not Emscripten, not WASI.
Змінено в версії 3.2: Додана підтримка Windows.
- os.getpriority(which, who)¶
Отримати пріоритет планування програми. Значення which є одним із
PRIO_PROCESS
,PRIO_PGRP
абоPRIO_USER
, і who інтерпретується відносно which (ідентифікатор процесу дляPRIO_PROCESS
, ідентифікатор групи процесів дляPRIO_PGRP
та ідентифікатор користувача дляPRIO_USER
). Нульове значення для who позначає (відповідно) викликаючий процес, групу процесів викликаючого процесу або справжній ідентифікатор користувача викликаючого процесу.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
Параметри для функцій
getpriority()
іsetpriority()
.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.PRIO_DARWIN_THREAD¶
- os.PRIO_DARWIN_PROCESS¶
- os.PRIO_DARWIN_BG¶
- os.PRIO_DARWIN_NONUI¶
Параметри для функцій
getpriority()
іsetpriority()
.Availability: macOS
Added in version 3.12.
- os.getresuid()¶
Повертає кортеж (ruid, euid, suid), що позначає справжні, ефективні та збережені ідентифікатори користувачів поточного процесу.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.2.
- os.getresgid()¶
Повертає кортеж (rgid, egid, sgid), що позначає справжні, ефективні та збережені ідентифікатори груп поточного процесу.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.2.
- os.getuid()¶
Повертає справжній ідентифікатор користувача поточного процесу.
Availability: Unix.
The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.
- os.initgroups(username, gid, /)¶
Викличте системний initgroups(), щоб ініціалізувати список доступу групи з усіма групами, членом яких є вказане ім’я користувача, а також ідентифікатор зазначеної групи.
Availability: Unix, not Emscripten, not WASI.
Added in version 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 forputenv()
.Викликає подію аудиту
os.putenv
з аргументамиkey
,value
.Змінено в версії 3.9: Тепер функція доступна завжди.
- os.setegid(egid, /)¶
Установіть ефективний ідентифікатор групи поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.seteuid(euid, /)¶
Встановити ефективний ідентифікатор користувача поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.setgid(gid, /)¶
Встановіть ідентифікатор групи поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.setgroups(groups, /)¶
Установіть для списку ідентифікаторів додаткових груп, пов’язаних із поточним процесом, значення groups. групи мають бути послідовністю, а кожен елемент має бути цілим числом, що ідентифікує групу. Зазвичай ця операція доступна лише суперкористувачу.
Availability: Unix, not Emscripten, not WASI.
Примітка
У macOS довжина groups не може перевищувати визначену системою максимальну кількість ефективних ідентифікаторів груп, як правило, 16. Перегляньте документацію для
getgroups()
, щоб дізнатися про випадки, коли він може не повернути той самий список груп, встановлений за допомогою виклику setgroups().
- os.setns(fd, nstype=0)¶
Reassociate the current thread with a Linux namespace. See the setns(2) and namespaces(7) man pages for more details.
If fd refers to a
/proc/pid/ns/
link,setns()
reassociates the calling thread with the namespace associated with that link, and nstype may be set to one of the CLONE_NEW* constants to impose constraints on the operation (0
means no constraints).Since Linux 5.8, fd may refer to a PID file descriptor obtained from
pidfd_open()
. In this case,setns()
reassociates the calling thread into one or more of the same namespaces as the thread referred to by fd. This is subject to any constraints imposed by nstype, which is a bit mask combining one or more of the CLONE_NEW* constants, e.g.setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)
. The caller’s memberships in unspecified namespaces are left unchanged.fd can be any object with a
fileno()
method, or a raw file descriptor.This example reassociates the thread with the
init
process’s network namespace:fd = os.open("/proc/1/ns/net", os.O_RDONLY) os.setns(fd, os.CLONE_NEWNET) os.close(fd)
Availability: Linux >= 3.0 with glibc >= 2.14.
Added in version 3.12.
Дивись також
The
unshare()
function.
- os.setpgrp()¶
Call the system call
setpgrp()
orsetpgrp(0, 0)
depending on which version is implemented (if any). See the Unix manual for the semantics.Availability: Unix, not Emscripten, not WASI.
- 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.Availability: Unix, not Emscripten, not WASI.
- os.setpriority(which, who, priority)¶
Встановити пріоритет планування програми. Значення which є одним із
PRIO_PROCESS
,PRIO_PGRP
абоPRIO_USER
і who інтерпретується відносно which (ідентифікатор процесу дляPRIO_PROCESS
, ідентифікатор групи процесів дляPRIO_PGRP
та ідентифікатор користувача дляPRIO_USER
). Нульове значення для who позначає (відповідно) викликаючий процес, групу процесів викликаючого процесу або справжній ідентифікатор користувача викликаючого процесу. пріоритет — це значення в діапазоні від -20 до 19. Пріоритет за замовчуванням — 0; нижчі пріоритети викликають більш сприятливе планування.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.setregid(rgid, egid, /)¶
Встановіть справжні та ефективні ідентифікатори груп поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.setresgid(rgid, egid, sgid, /)¶
Встановіть реальні, ефективні та збережені ідентифікатори груп поточного процесу.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.2.
- os.setresuid(ruid, euid, suid, /)¶
Встановіть справжні, ефективні та збережені ідентифікатори користувачів поточного процесу.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.2.
- os.setreuid(ruid, euid, /)¶
Встановіть справжні та ефективні ідентифікатори користувачів поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.getsid(pid, /)¶
Call the system call
getsid()
. See the Unix manual for the semantics.Availability: Unix, not Emscripten, not WASI.
- os.setsid()¶
Call the system call
setsid()
. See the Unix manual for the semantics.Availability: Unix, not Emscripten, not WASI.
- os.setuid(uid, /)¶
Встановіть ідентифікатор користувача поточного процесу.
Availability: Unix, not Emscripten, not WASI.
- os.strerror(code, /)¶
Return the error message corresponding to the error code in code. On platforms where
strerror()
returnsNULL
when given an unknown error number,ValueError
is raised.
- os.supports_bytes_environ¶
True
, якщо рідний тип ОС середовища - байти (наприклад,False
у Windows).Added in version 3.2.
- os.umask(mask, /)¶
Установіть поточну цифрову umask і поверніть попередню umask.
The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.
- os.uname()¶
Повертає інформацію про поточну операційну систему. Значення, що повертається, є об’єктом із п’ятьма атрибутами:
sysname
- назва операційної системиnodename
- ім’я машини в мережі (визначено реалізацією)release
- випуск операційної системиversion
- версія операційної системиmachine
- ідентифікатор обладнання
Для зворотної сумісності цей об’єкт також можна ітерувати, ведучи себе як п’ять кортежів, що містять
sysname
,nodename
,release
,version
іmachine
в такому порядку.Деякі системи скорочують
nodename
до 8 символів або до початкового компонента; кращий спосіб отримати ім’я хоста –socket.gethostname()
або навітьsocket.gethostbyaddr(socket.gethostname())
.Availability: 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.
Disassociate parts of the process execution context, and move them into a newly created namespace. See the unshare(2) man page for more details. The flags argument is a bit mask, combining zero or more of the CLONE_* constants, that specifies which parts of the execution context should be unshared from their existing associations and moved to a new namespace. If the flags argument is
0
, no changes are made to the calling process’s execution context.Availability: Linux >= 2.6.16.
Added in version 3.12.
Дивись також
The
setns()
function.
Створення файлового об’єкта¶
Ці функції створюють нові файлові об’єкти. (Див. також open()
для відкриття дескрипторів файлів.)
Операції файлового дескриптора¶
Ці функції працюють із потоками введення/виведення, на які посилаються за допомогою файлових дескрипторів.
Дескриптори файлів — це малі цілі числа, що відповідають файлу, відкритому поточним процесом. Наприклад, стандартним введенням зазвичай є дескриптор файлу 0, стандартним виводом є 1, а стандартною помилкою є 2. Іншим файлам, відкритим процесом, буде присвоєно 3, 4, 5 і так далі. Назва «файловий дескриптор» трохи оманлива; на платформах Unix на сокети та канали також посилаються дескриптори файлів.
Метод fileno()
можна використовувати для отримання дескриптора файлу, пов’язаного з file object, коли це необхідно. Зауважте, що використання безпосередньо файлового дескриптора обійде методи файлового об’єкта, ігноруючи такі аспекти, як внутрішня буферизація даних.
- os.close(fd)¶
Закрити файловий дескриптор fd.
- 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.In Linux kernel older than 5.3, the files pointed to by src and dst must reside in the same filesystem, otherwise an
OSError
is raised witherrno
set toerrno.EXDEV
.This copy is done without the additional cost of transferring data from the kernel to user space and then back into the kernel. Additionally, some filesystems could implement extra optimizations, such as the use of reflinks (i.e., two or more inodes that share pointers to the same copy-on-write disk blocks; supported file systems include btrfs and XFS) and server-side copy (in the case of NFS).
The function copies bytes between two file descriptors. Text options, like the encoding and the line ending, are ignored.
Поверненим значенням є кількість скопійованих байтів. Це може бути менше запитаної суми.
Примітка
On Linux,
os.copy_file_range()
should not be used for copying a range of a pseudo file from a special filesystem like procfs and sysfs. It will always copy no bytes and return 0 as if the file was empty because of a known Linux kernel issue.Availability: Linux >= 4.5 with glibc >= 2.27.
Added in version 3.8.
- os.device_encoding(fd)¶
Повертає рядок, що описує кодування пристрою, пов’язаного з fd, якщо він підключений до терміналу; інакше повертає
None
.В Unix, якщо ввімкнено Python UTF-8 Mode, поверніть
'UTF-8''
замість кодування пристрою.Змінено в версії 3.10: В Unix функція тепер реалізує режим Python UTF-8.
- os.dup(fd, /)¶
Повертає дублікат файлового дескриптора fd. Новий файловий дескриптор не успадковується.
У Windows під час дублювання стандартного потоку (0: stdin, 1: stdout, 2: stderr) новий дескриптор файлу є inheritable.
Availability: not WASI.
Змінено в версії 3.4: Новий файловий дескриптор тепер не успадковується.
- os.dup2(fd, fd2, inheritable=True)¶
Дублюйте файловий дескриптор fd до fd2, закриваючи останній, якщо необхідно. Повернути fd2. Новий файловий дескриптор inheritable за замовчуванням або не успадковується, якщо inheritable має значення
False
.Availability: not WASI.
Змінено в версії 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
.Availability: Unix.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
- 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
.Availability: Unix.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
- os.fdatasync(fd)¶
Примусовий запис файлу з файловим дескриптором fd на диск. Не примусово оновлювати метадані.
Availability: 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)
.Availability: 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)
.Availability: 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, записуються на диск.Availability: Unix, Windows.
- os.ftruncate(fd, length, /)¶
Обріжте файл, що відповідає файловому дескриптору fd, щоб він мав розмір не більше length байтів. Починаючи з Python 3.3, це еквівалентно
os.truncate(fd, length)
.Викликає подію аудиту
os.truncate
з аргументамиfd
,length
.Availability: Unix, Windows.
Змінено в версії 3.5: Додана підтримка Windows
- os.get_blocking(fd, /)¶
Отримати режим блокування дескриптора файлу:
False
, якщо встановлено прапорецьO_NONBLOCK
,True
, якщо прапорець знято.Дивіться також
set_blocking()
іsocket.socket.setblocking()
.Availability: Unix, Windows.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
On Windows, this function is limited to pipes.
Added in version 3.5.
Змінено в версії 3.12: Added support for pipes on Windows.
- 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
.Availability: Unix.
Added in version 3.3.
- os.F_LOCK¶
- os.F_TLOCK¶
- os.F_ULOCK¶
- os.F_TEST¶
Прапорці, які вказують, яку дію виконуватиме
lockf()
.Availability: Unix.
Added in version 3.3.
- os.login_tty(fd, /)¶
Prepare the tty of which fd is a file descriptor for a new login session. Make the calling process a session leader; make the tty the controlling tty, the stdin, the stdout, and the stderr of the calling process; close fd.
Availability: Unix, not Emscripten, not WASI.
Added in version 3.11.
- os.lseek(fd, pos, whence, /)¶
Set the current position of file descriptor fd to position pos, modified by whence, and return the new position in bytes relative to the start of the file. Valid values for whence are:
SEEK_SET
or0
– set pos relative to the beginning of the fileSEEK_CUR
or1
– set pos relative to the current file positionSEEK_END
or2
– set pos relative to the end of the fileSEEK_HOLE
– set pos to the next data location, relative to posSEEK_DATA
– set pos to the next data hole, relative to pos
Змінено в версії 3.3: Add support for
SEEK_HOLE
andSEEK_DATA
.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Parameters to the
lseek()
function and theseek()
method on file-like objects, for whence to adjust the file position indicator.SEEK_SET
Adjust the file position relative to the beginning of the file.
SEEK_CUR
Adjust the file position relative to the current file position.
SEEK_END
Adjust the file position relative to the end of the file.
Their values are 0, 1, and 2, respectively.
- os.SEEK_HOLE¶
- os.SEEK_DATA¶
Parameters to the
lseek()
function and theseek()
method on file-like objects, for seeking file data and holes on sparsely allocated files.SEEK_DATA
Adjust the file offset to the next location containing data, relative to the seek position.
SEEK_HOLE
Adjust the file offset to the next location containing a hole, relative to the seek position. A hole is defined as a sequence of zeros.
Примітка
These operations only make sense for filesystems that support them.
Availability: Linux >= 3.1, macOS, Unix
Added in version 3.3.
- 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: Додано параметр dir_fd.
Змінено в версії 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_EVTONLY¶
- os.O_FSYNC¶
- os.O_SYMLINK¶
- os.O_NOFOLLOW_ANY¶
Наведені вище константи доступні лише в macOS.
Змінено в версії 3.10: Додайте константи
O_EVTONLY
,O_FSYNC
,O_SYMLINK
іO_NOFOLLOW_ANY
.
- 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.
- os.openpty()¶
Відкрийте нову пару псевдотерміналів. Повертає пару файлових дескрипторів
(master, slave)
для pty і tty відповідно. Нові дескриптори файлів не успадковуються. Для (трохи) більш портативного підходу використовуйте модульpty
.Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.4: Нові файлові дескриптори тепер не успадковуються.
- os.pipe()¶
Створіть трубу. Повертає пару файлових дескрипторів
(r, w)
, які можна використовувати для читання та запису відповідно. Новий файловий дескриптор не успадковується.Availability: Unix, Windows.
Змінено в версії 3.4: Нові файлові дескриптори тепер не успадковуються.
- os.pipe2(flags, /)¶
Створіть трубу з прапорцями, встановленими атомарно. прапорці можуть бути створені шляхом об’єднання одного або кількох із цих значень
O_NONBLOCK
,O_CLOEXEC
. Повертає пару файлових дескрипторів(r, w)
, які можна використовувати для читання та запису відповідно.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.posix_fallocate(fd, offset, len, /)¶
Переконується, що для файлу, указаного fd, виділено достатньо місця на диску, починаючи з offset і продовжуючи len байт.
Availability: Unix, not Emscripten.
Added in version 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
.Availability: Unix.
Added in version 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()
, які визначають шаблон доступу, який, імовірно, буде використаний.Availability: Unix.
Added in version 3.3.
- os.pread(fd, n, offset, /)¶
Прочитати щонайбільше n байт із файлового дескриптора fd у позиції offset, залишаючи зміщення файлу незмінним.
Повертає байтовий рядок, що містить прочитані байти. Якщо досягнуто кінця файлу, на який посилається fd, повертається порожній об’єкт bytes.
Availability: Unix.
Added in version 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, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
Using flags requires Linux >= 4.6.
Added in version 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 toerrno.EAGAIN
.Availability: Linux >= 4.14.
Added in version 3.7.
- os.RWF_HIPRI¶
Високий пріоритет читання/запису. Дозволяє файловим системам на основі блоків використовувати опитування пристрою, що забезпечує меншу затримку, але може використовувати додаткові ресурси.
Наразі в Linux цю функцію можна використовувати лише для дескриптора файлу, відкритого за допомогою позначки
O_DIRECT
.Availability: Linux >= 4.6.
Added in version 3.7.
- os.pwrite(fd, str, offset, /)¶
Запишіть байтовий рядок у str у файловий дескриптор fd у позиції offset, залишаючи зміщення файлу без змін.
Повертає кількість фактично записаних байтів.
Availability: Unix.
Added in version 3.3.
- os.pwritev(fd, buffers, offset, flags=0, /)¶
Write the buffers contents to file descriptor fd at an 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, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
Using flags requires Linux >= 4.6.
Added in version 3.7.
- os.RWF_DSYNC¶
Надайте еквівалент для кожного запису прапора
O_DSYNC
os.open()
. Цей ефект прапора застосовується лише до діапазону даних, записаного системним викликом.Availability: Linux >= 4.7.
Added in version 3.7.
- os.RWF_SYNC¶
Надайте еквівалент для кожного запису прапора
O_SYNC
os.open()
. Цей ефект прапора застосовується лише до діапазону даних, записаного системним викликом.Availability: Linux >= 4.7.
Added in version 3.7.
- os.RWF_APPEND¶
Надайте еквівалент для кожного запису прапора
O_APPEND
os.open()
. Цей прапор має значення лише дляos.pwritev()
, і його дія стосується лише діапазону даних, записаного системним викликом. Аргумент offset не впливає на операцію запису; дані завжди додаються в кінець файлу. Однак, якщо аргумент offset дорівнює-1
, поточний файл offset оновлюється.Availability: Linux >= 4.16.
Added in version 3.10.
- 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.
Availability: Unix, not Emscripten, not WASI.
Примітка
Щоб отримати обгортку вищого рівня
sendfile()
, перегляньтеsocket.socket.sendfile()
.Added in version 3.3.
Змінено в версії 3.9: Параметри out і in перейменовано на out_fd і in_fd.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
Параметри функції
sendfile()
, якщо реалізація їх підтримує.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.SF_NOCACHE¶
Parameter to the
sendfile()
function, if the implementation supports it. The data won’t be cached in the virtual memory and will be freed afterwards.Availability: Unix, not Emscripten, not WASI.
Added in version 3.11.
- os.set_blocking(fd, blocking, /)¶
Встановити режим блокування вказаного файлового дескриптора. Установіть прапорець
O_NONBLOCK
, якщо блокування має значенняFalse
, зніміть прапорець в іншому випадку.Дивіться також
get_blocking()
іsocket.socket.setblocking()
.Availability: Unix, Windows.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
On Windows, this function is limited to pipes.
Added in version 3.5.
Змінено в версії 3.12: Added support for pipes on Windows.
- os.splice(src, dst, count, offset_src=None, offset_dst=None)¶
Transfer count bytes from file descriptor src, starting from offset offset_src, to file descriptor dst, starting from offset offset_dst. At least one of the file descriptors must refer to a pipe. If offset_src is
None
, then src is read from the current position; respectively for offset_dst. The offset associated to the file descriptor that refers to a pipe must beNone
. The files pointed to by src and dst must reside in the same filesystem, otherwise anOSError
is raised witherrno
set toerrno.EXDEV
.Ця копія виконується без додаткових витрат на передачу даних із ядра в простір користувача, а потім назад у ядро. Крім того, деякі файлові системи можуть реалізувати додаткові оптимізації. Копіювання виконується так, ніби обидва файли відкриваються як двійкові.
Після успішного завершення повертає кількість байтів, з’єднаних із каналом або з каналу. Повернене значення 0 означає кінець введення. Якщо src посилається на канал, це означає, що не було даних для передачі, і не було б сенсу блокувати, оскільки немає записувачів, підключених до кінця каналу для запису.
Availability: Linux >= 2.6.17 with glibc >= 2.5
Added in version 3.10.
- os.readv(fd, buffers, /)¶
Читання з файлового дескриптора fd у кілька змінних байт-подібних об’єктів буферів. Передайте дані в кожен буфер, доки він не заповниться, а потім перейдіть до наступного буфера в послідовності, щоб утримувати решту даних.
Повертає загальну кількість фактично прочитаних байтів, яка може бути меншою за загальну ємність усіх об’єктів.
Операційна система може встановити обмеження (
sysconf()
значення'SC_IOV_MAX'
) на кількість буферів, які можна використовувати.Availability: Unix.
Added in version 3.3.
- os.tcgetpgrp(fd, /)¶
Повертає групу процесів, пов’язану з терміналом, задану fd (дескриптор відкритого файлу, який повертає
os.open()
).Availability: Unix, not WASI.
- os.tcsetpgrp(fd, pg, /)¶
Встановіть групу процесів, пов’язану з терміналом, надану fd (дескриптор відкритого файлу, який повертає
os.open()
), на pg.Availability: Unix, not WASI.
- os.ttyname(fd, /)¶
Повертає рядок, який визначає термінальний пристрій, пов’язаний із файловим дескриптором fd. Якщо fd не пов’язано з термінальним пристроєм, виникає виняток.
Availability: 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'
) на кількість буферів, які можна використовувати.Availability: Unix.
Added in version 3.3.
Запит розміру терміналу¶
Added in version 3.3.
- os.get_terminal_size(fd=STDOUT_FILENO, /)¶
Повертає розмір вікна терміналу як
(стовпці, рядки)
, кортеж типуterminal_size
.Додатковий аргумент
fd
(за замовчуваннямSTDOUT_FILENO
або стандартний вивід) визначає, який дескриптор файлу слід запитувати.Якщо дескриптор файлу не підключено до терміналу, виникає
OSError
.shutil.get_terminal_size()
— це функція високого рівня, яка зазвичай повинна використовуватися,os.get_terminal_size
— це реалізація низького рівня.Availability: Unix, Windows.
Успадкування файлових дескрипторів¶
Added in version 3.4.
Файловий дескриптор має позначку «успадковуваний», яка вказує, чи може файловий дескриптор успадковуватися дочірніми процесами. Починаючи з Python 3.4, дескриптори файлів, створені Python, за замовчуванням не успадковуються.
В UNIX неуспадковані файлові дескриптори закриваються в дочірніх процесах під час виконання нової програми, інші файлові дескриптори успадковуються.
У Windows неуспадковані дескриптори та дескриптори файлів закриті в дочірніх процесах, за винятком стандартних потоків (дескриптори файлів 0, 1 і 2: stdin, stdout і stderr), які завжди успадковуються. За допомогою функцій spawn*
успадковуються всі успадковані маркери та всі успадковані дескриптори файлів. За допомогою модуля subprocess
усі файлові дескриптори, крім стандартних потоків, закриваються, а успадковані дескриптори успадковуються, лише якщо параметр close_fds має значення False
.
On WebAssembly platforms wasm32-emscripten
and wasm32-wasi
, the file
descriptor cannot be modified.
- os.get_inheritable(fd, /)¶
Отримайте позначку «успадкований» зазначеного файлового дескриптора (логічне значення).
- os.set_inheritable(fd, inheritable, /)¶
Встановіть прапорець «успадкований» для зазначеного файлового дескриптора.
- os.get_handle_inheritable(handle, /)¶
Отримайте прапор «успадкований» зазначеного маркера (логічне значення).
Availability: Windows.
- os.set_handle_inheritable(handle, inheritable, /)¶
Встановіть прапорець «успадкований» для вказаного маркера.
Availability: 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
.
не слідувати за символічними посиланнями: Якщо follow_symlinks має значення
False
, а останнім елементом шляху, з яким потрібно працювати, є символьне посилання, функція працюватиме з самим символічним посиланням, а не з файлом, на який вказує посилання. (Для систем POSIX Python викличе варіант функціїl...
.)Ви можете перевірити, чи підтримується follow_symlinks для певної функції на вашій платформі, використовуючи
os.supports_follow_symlinks
. Якщо він недоступний, його використання викличеNotImplementedError
.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
Використовуйте справжній uid/gid, щоб перевірити доступ до шляху. Зауважте, що більшість операцій використовуватиме ефективний 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
.Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.3: Added the follow_symlinks parameter.
Змінено в версії 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 thestat.S_IWRITE
andstat.S_IREAD
constants or a corresponding integer value). All other bits are ignored.The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
Викликає подію аудиту
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
.Availability: Unix.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
Змінено в версії 3.3: Додано підтримку вказівки шляху як дескриптора відкритого файлу, а також аргументів dir_fd і follow_symlinks.
Змінено в версії 3.6: Підтримує path-like object.
- os.chroot(path)¶
Змініть кореневий каталог поточного процесу на шлях.
Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.6: Приймає path-like object.
- os.fchdir(fd)¶
Змініть поточний робочий каталог на каталог, представлений дескриптором файлу fd. Дескриптор має посилатися на відкритий каталог, а не на відкритий файл. Починаючи з Python 3.3, це еквівалентно
os.chdir(fd)
.Викликає подію аудиту
os.chdir
з аргументомpath
.Availability: 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
.Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.6: Приймає path-like object.
- os.lchmod(path, mode)¶
Змініть режим шляху на числовий режим. Якщо шлях є символічним посиланням, це впливає на символічне посилання, а не на ціль. Перегляньте документацію для
chmod()
, щоб дізнатися про можливі значення mode. Починаючи з Python 3.3, це еквівалентноos.chmod(path, mode, follow_symlinks=False)
.lchmod()
is not part of POSIX, but Unix implementations may have it if changing the mode of symbolic links is supported.Викликає подію аудиту
os.chmod
з аргументамиpath
,mode
,dir_fd
.Availability: Unix, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not OpenBSD
Змінено в версії 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
.Availability: Unix.
Змінено в версії 3.6: Приймає path-like object.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
Створіть жорстке посилання на src під назвою dst.
Ця функція може підтримувати вказівку src_dir_fd та/або dst_dir_fd для надання шляхів відносно дескрипторів каталогу, і не слідування за символічними посиланнями.
Викликає подію аудиту
os.link
з аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Availability: Unix, Windows, not Emscripten.
Змінено в версії 3.2: Додана підтримка Windows.
Змінено в версії 3.3: Added the src_dir_fd, dst_dir_fd, and follow_symlinks parameters.
Змінено в версії 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.listdrives()¶
Return a list containing the names of drives on a Windows system.
A drive name typically looks like
'C:\\'
. Not every drive name will be associated with a volume, and some may be inaccessible for a variety of reasons, including permissions, network connectivity or missing media. This function does not test for access.May raise
OSError
if an error occurs collecting the drive names.Raises an auditing event
os.listdrives
with no arguments.Availability: Windows
Added in version 3.12.
- os.listmounts(volume)¶
Return a list containing the mount points for a volume on a Windows system.
volume must be represented as a GUID path, like those returned by
os.listvolumes()
. Volumes may be mounted in multiple locations or not at all. In the latter case, the list will be empty. Mount points that are not associated with a volume will not be returned by this function.The mount points return by this function will be absolute paths, and may be longer than the drive name.
Raises
OSError
if the volume is not recognized or if an error occurs collecting the paths.Raises an auditing event
os.listmounts
with argumentvolume
.Availability: Windows
Added in version 3.12.
- os.listvolumes()¶
Return a list containing the volumes in the system.
Volumes are typically represented as a GUID path that looks like
\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\
. Files can usually be accessed through a GUID path, permissions allowing. However, users are generally not familiar with them, and so the recommended use of this function is to retrieve mount points usingos.listmounts()
.May raise
OSError
if an error occurs collecting the volumes.Raises an auditing event
os.listvolumes
with no arguments.Availability: Windows
Added in version 3.12.
- os.lstat(path, *, dir_fd=None)¶
Perform the equivalent of an
lstat()
system call on the given path. Similar tostat()
, but does not follow symbolic links. Return astat_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: Додано параметр dir_fd.
Змінено в версії 3.6: Приймає path-like object.
Змінено в версії 3.12.4: 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 invokingmakedirs()
. The file permission bits of existing parent directories are not changed.If exist_ok is
False
(the default), aFileExistsError
is raised if the target directory already exists.Примітка
makedirs()
заплутає, якщо елементи шляху, які потрібно створити, включаютьpardir
(наприклад, «..» у системах UNIX).Ця функція правильно обробляє шляхи UNC.
Викликає подію аудиту
os.mkdir
з аргументамиpath
,mode
,dir_fd
.Змінено в версії 3.2: Added 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 — він лише створює точку зустрічі.Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 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()
), інакше він ігнорується.Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.
Availability: Unix, not Emscripten, not WASI.
Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 3.6: Приймає path-like object.
- os.major(device, /)¶
Extract the device major number from a raw device number (usually the
st_dev
orst_rdev
field fromstat
).
- os.minor(device, /)¶
Extract the device minor number from a raw device number (usually the
st_dev
orst_rdev
field fromstat
).
- 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
для номера помилки .Ця функція може підтримувати зазначення файлового дескриптора.
Availability: Unix.
Змінено в версії 3.6: Приймає path-like object.
- os.pathconf_names¶
Словник зіставляє імена, прийняті
pathconf()
іfpathconf()
до цілих значень, визначених для цих імен головною операційною системою. Це можна використовувати для визначення набору імен, відомих системі.Availability: Unix.
- os.readlink(path, *, dir_fd=None)¶
Повертає рядок, що представляє шлях, на який вказує символічне посилання. Результатом може бути абсолютний або відносний шлях; якщо він відносний, його можна перетворити на абсолютний шлях за допомогою
os.path.join(os.path.dirname(path), result)
.Якщо шлях є рядковим об’єктом (прямо чи опосередковано через інтерфейс
PathLike
), результат також буде рядковим об’єктом, і виклик може викликати UnicodeDecodeError. Якщо шлях є об’єктом bytes (прямим чи опосередкованим), результатом буде об’єкт bytes.Ця функція також може підтримувати шляхи відносно дескрипторів каталогу.
Під час спроби визначити шлях, який може містити посилання, використовуйте
realpath()
для належної обробки рекурсії та відмінностей платформи.Availability: Unix, Windows.
Змінено в версії 3.2: Додано підтримку символічних посилань Windows 6.0 (Vista).
Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 3.6: Приймає path-like object в Unix.
Змінено в версії 3.8: Приймає path-like object і об’єкт bytes у Windows.
Додано підтримку для з’єднань каталогів і змінено, щоб повертати шлях підстановки (який зазвичай включає префікс
\\?\
), а не необов’язкове поле «назви для друку», яке поверталося раніше.
- os.remove(path, *, dir_fd=None)¶
Remove (delete) the file path. If path is a directory, an
OSError
is raised. Usermdir()
to remove directories. If the file does not exist, aFileNotFoundError
is raised.Ця функція може підтримувати шляхи відносно дескрипторів каталогу.
У Windows спроба видалити файл, який використовується, викликає виняток; в Unix запис каталогу видаляється, але сховище, виділене для файлу, не стає доступним, доки оригінальний файл більше не буде використовуватися.
Ця функція семантично ідентична
unlink()
.Викликає подію аудиту
os.remove
з аргументамиpath
,dir_fd
.Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 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. The operation may fail if src and dst are on different filesystems. Useshutil.move()
to support moves to a different filesystem.В Unix, якщо src є файлом, а dst є каталогом або навпаки, виникне
IsADirectoryError
абоNotADirectoryError
відповідно. Якщо обидва є каталогами, а dst порожній, dst буде мовчки замінено. Якщо dst є непорожнім каталогом, виникаєOSError
. Якщо обидва є файлами, dst буде замінено мовчки, якщо користувач має дозвіл. Операція може завершитися помилкою в деяких варіантах Unix, якщо src і dst знаходяться в різних файлових системах. У разі успіху перейменування буде атомарною операцією (це вимога POSIX).Ця функція може підтримувати вказівку src_dir_fd та/або dst_dir_fd для надання шляхів відносно дескрипторів каталогу.
Якщо ви бажаєте перезаписати місце призначення на різних платформах, використовуйте
replace()
.Викликає подію аудиту
os.rename
з аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Змінено в версії 3.3: Added the src_dir_fd and dst_dir_fd parameters.
Змінено в версії 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
.Added in version 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, a
FileNotFoundError
or anOSError
is raised respectively. In order to remove whole directory trees,shutil.rmtree()
can be used.Ця функція може підтримувати шляхи відносно дескрипторів каталогу.
Викликає подію аудиту
os.rmdir
з аргументамиpath
,dir_fd
.Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 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
.Added in version 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.Added in version 3.5.
Змінено в версії 3.6: Added support for the context manager protocol and the
close()
method. If ascandir()
iterator is neither exhausted nor explicitly closed aResourceWarning
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. Шлях є абсолютним, лише якщо аргумент pathscandir()
був абсолютним. Якщо аргументscandir()
path був дескриптором файлу, атрибутpath
буде таким самим, як атрибутname
.Атрибут
path
матиме значенняbytes
, якщо аргумент pathscandir()
має тип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_symlinksTrue
і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()
.
- is_symlink()¶
Повертає
True
, якщо цей запис є символічним посиланням (навіть якщо пошкоджене); повертаєFalse
, якщо запис вказує на каталог або будь-який файл, або якщо він більше не існує.Результат кешується в об’єкті
os.DirEntry
. Викличтеos.path.islink()
, щоб отримати актуальну інформацію.Під час першого некешованого виклику в більшості випадків системний виклик не потрібен. Зокрема, ані Windows, ані Unix не потребують системного виклику, за винятком певних файлових систем Unix, таких як мережеві файлові системи, які повертають
dirent.d_type == DT_UNKNOWN
.Цей метод може викликати
OSError
, наприкладPermissionError
, алеFileNotFoundError
перехоплюється і не викликається.
- is_junction()¶
Return
True
if this entry is a junction (even if broken); returnFalse
if the entry points to a regular directory, any kind of file, a symlink, or if it doesn’t exist anymore.The result is cached on the
os.DirEntry
object. Callos.path.isjunction()
to fetch up-to-date information.Added in version 3.12.
- 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_symlinksTrue
іFalse
. Зателефонуйтеos.stat()
, щоб отримати актуальну інформацію.
Note that there is a nice correspondence between several attributes and methods of
os.DirEntry
and ofpathlib.Path
. In particular, thename
attribute has the same meaning, as do theis_dir()
,is_file()
,is_symlink()
,is_junction()
, andstat()
methods.Added in version 3.5.
Змінено в версії 3.6: Додано підтримку інтерфейсу
PathLike
. Додано підтримку шляхівbytes
у Windows.Змінено в версії 3.12: The
st_ctime
attribute of a stat result is deprecated on Windows. The file creation time is properly available asst_birthtime
, and in the futurest_ctime
may be changed to return zero or the metadata change time, if available.
- 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
Змінено в версії 3.3: Added the dir_fd and follow_symlinks parameters, 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 ofos.stat()
,os.fstat()
andos.lstat()
.Атрибути:
- st_mode¶
Режим файлу: тип файлу та біти режиму файлу (дозволи).
- st_ino¶
Залежить від платформи, але якщо не нуль, унікально ідентифікує файл для заданого значення
st_dev
. Зазвичай:номер inode в Unix,
індекс файлу у Windows
- st_dev¶
Ідентифікатор пристрою, на якому знаходиться цей файл.
- st_nlink¶
Кількість жорстких посилань.
- st_uid¶
Ідентифікатор користувача власника файлу.
- st_gid¶
Груповий ідентифікатор власника файлу.
- st_size¶
Розмір файлу в байтах, якщо це звичайний файл або символьне посилання. Розмір символічного посилання - це довжина шляху, який воно містить, без кінцевого нульового байта.
Мітки часу:
- st_atime¶
Час останнього доступу, виражений у секундах.
- st_mtime¶
Час останньої зміни вмісту, виражений у секундах.
- st_ctime¶
Time of most recent metadata change expressed in seconds.
Змінено в версії 3.12:
st_ctime
is deprecated on Windows. Usest_birthtime
for the file creation time. In the future,st_ctime
will contain the time of the most recent metadata change, as for other platforms.
- st_atime_ns¶
Час останнього доступу, виражений у наносекундах як ціле число.
Added in version 3.3.
- st_mtime_ns¶
Час останньої зміни вмісту, виражений у наносекундах як ціле число.
Added in version 3.3.
- st_ctime_ns¶
Time of most recent metadata change expressed in nanoseconds as an integer.
Added in version 3.3.
Змінено в версії 3.12:
st_ctime_ns
is deprecated on Windows. Usest_birthtime_ns
for the file creation time. In the future,st_ctime
will contain the time of the most recent metadata change, as for other platforms.
- st_birthtime¶
Time of file creation expressed in seconds. This attribute is not always available, and may raise
AttributeError
.Змінено в версії 3.12:
st_birthtime
is now available on Windows.
- st_birthtime_ns¶
Time of file creation expressed in nanoseconds as an integer. This attribute is not always available, and may raise
AttributeError
.Added in version 3.12.
Примітка
The exact meaning and resolution of the
st_atime
,st_mtime
,st_ctime
andst_birthtime
attributes depend on the operating system and the file system. For example, on Windows systems using the FAT32 file systems,st_mtime
has 2-second resolution, andst_atime
has only 1-day resolution. See your operating system documentation for details.Similarly, although
st_atime_ns
,st_mtime_ns
,st_ctime_ns
andst_birthtime_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 storest_atime
,st_mtime
,st_ctime
andst_birthtime
cannot preserve all of it, and as such will be slightly inexact. If you need the exact timestamps you should always usest_atime_ns
,st_mtime_ns
,st_ctime_ns
andst_birthtime_ns
.У деяких системах Unix (таких як Linux) також можуть бути доступні такі атрибути:
- st_blocks¶
Кількість 512-байтних блоків, виділених для файлу. Це може бути менше, ніж
st_size
/512, якщо файл має отвори.
- st_blksize¶
«Бажаний» розмір блоку для ефективного введення/виведення файлової системи. Запис у файл меншими фрагментами може спричинити неефективне читання-змінення-перезапис.
- st_rdev¶
Тип пристрою, якщо пристрій inode.
- st_flags¶
Визначені користувачем позначки для файлу.
В інших системах Unix (таких як FreeBSD) такі атрибути можуть бути доступними (але можуть бути заповнені, лише якщо root намагається їх використати):
- st_gen¶
Номер покоління файлу.
У Solaris і похідних також можуть бути доступні такі атрибути:
- st_fstype¶
Рядок, який однозначно визначає тип файлової системи, яка містить файл.
У системах macOS також можуть бути доступні такі атрибути:
- st_rsize¶
Реальний розмір файлу.
- st_creator¶
Творець файлу.
- st_type¶
Тип файлу.
У системах Windows також доступні такі атрибути:
- st_file_attributes¶
Windows file attributes:
dwFileAttributes
member of theBY_HANDLE_FILE_INFORMATION
structure returned byGetFileInformationByHandle()
. See theFILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>
constants in thestat
module.Added in version 3.5.
- st_reparse_tag¶
When
st_file_attributes
has theFILE_ATTRIBUTE_REPARSE_POINT
set, this field contains the tag identifying the type of reparse point. See theIO_REPARSE_TAG_*
constants in thestat
module.
The standard module
stat
defines functions and constants that are useful for extracting information from astat
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 thestat
structure, in the orderst_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, accessingstat_result
as a tuple always returns integers.Змінено в версії 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
відповідно.Змінено в версії 3.12: On Windows,
st_ctime
is deprecated. Eventually, it will contain the last metadata change time, for consistency with other platforms, but for now still contains creation time. Usest_birthtime
for the creation time.On Windows,
st_ino
may now be up to 128 bits, depending on the file system. Previously it would not be above 64 bits, and larger file identifiers would be arbitrarily packed.On Windows,
st_rdev
no longer returns a value. Previously it would contain the same asst_dev
, which was incorrect.Added the
st_birthtime
member on Windows.
- 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 thestatvfs
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).Ця функція може підтримувати зазначення файлового дескриптора.
Availability: 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 the
f_fsid
attribute.
- 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.
Added in version 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.
Added in version 3.3.
- os.supports_fd¶
Об’єкт
set
, що вказує, які функції в модуліos
дозволяють вказувати свій параметр path як дескриптор відкритого файлу на локальній платформі. Різні платформи надають різні функції, а основні функції, які Python використовує для прийняття відкритих файлових дескрипторів як шлях аргументів, доступні не на всіх платформах, які підтримує Python.Щоб визначити, чи дозволяє певна функція вказувати дескриптор відкритого файлу для свого параметра path, використовуйте оператор
in
наsupports_fd
. Як приклад, цей вираз має значенняTrue
, якщоos.chdir()
приймає дескриптори відкритих файлів для path на вашій локальній платформі:os.chdir in os.supports_fd
Added in version 3.3.
- os.supports_follow_symlinks¶
Об’єкт
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
Added in version 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
Створіть символічне посилання на src під назвою dst.
У Windows символічне посилання представляє або файл, або каталог і не перетворюється на ціль динамічно. Якщо ціль присутня, буде створено відповідний тип символічного посилання. В іншому випадку символічне посилання буде створено як каталог, якщо target_is_directory має значення
True
, або символічне посилання на файл (за замовчуванням), інакше. На платформах, відмінних від Windows, target_is_directory ігнорується.Ця функція може підтримувати шляхи відносно дескрипторів каталогу.
Примітка
У новіших версіях Windows 10 непривілейовані облікові записи можуть створювати символічні посилання, якщо ввімкнено режим розробника. Якщо режим розробника недоступний/увімкнено, потрібен привілей SeCreateSymbolicLinkPrivilege, або процес потрібно запускати від імені адміністратора.
OSError
виникає, коли функцію викликає непривілейований користувач.Викликає подію аудиту
os.symlink
з аргументамиsrc
,dst
,dir_fd
.Availability: Unix, Windows.
The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.
Змінено в версії 3.2: Додано підтримку символічних посилань Windows 6.0 (Vista).
Змінено в версії 3.3: Added the dir_fd parameter, and now allow target_is_directory on non-Windows platforms.
Змінено в версії 3.6: Приймає path-like object для src і dst.
Змінено в версії 3.8: Додано підтримку непідвищених символічних посилань у Windows із режимом розробника.
- os.sync()¶
Примусово записувати все на диск.
Availability: Unix.
Added in version 3.3.
- os.truncate(path, length)¶
Обріжте файл, що відповідає шляху, щоб його розмір не перевищував length байтів.
Ця функція може підтримувати зазначення файлового дескриптора.
Викликає подію аудиту
os.truncate
з аргументамиpath
,length
.Availability: Unix, Windows.
Added in version 3.3.
Змінено в версії 3.5: Додана підтримка Windows
Змінено в версії 3.6: Приймає path-like object.
- os.unlink(path, *, dir_fd=None)¶
Видалити (видалити) шлях до файлу. Ця функція семантично ідентична
remove()
; ім’яunlink
є його традиційною назвою Unix. Будь ласка, перегляньте документацію дляremove()
для отримання додаткової інформації.Викликає подію аудиту
os.remove
з аргументамиpath
,dir_fd
.Змінено в версії 3.3: Додано параметр dir_fd.
Змінено в версії 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; seestat()
. The best way to preserve exact times is to use the st_atime_ns and st_mtime_ns fields from theos.stat()
result object with the ns parameter toutime()
.Ця функція може підтримувати зазначення дескриптора файлу, шляхи відносно дескрипторів каталогу та неперехід за символічними посиланнями.
Викликає подію аудиту
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 (including symlinks to directories, and 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, doos.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.rmdir(top)
Викликає подію аудиту
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
.Availability: Unix.
Added in version 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 with glibc >= 2.27.
Added in version 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 with glibc >= 2.27
The
MFD_HUGE*
flags are only available since Linux 4.14.Added in version 3.8.
- os.eventfd(initval[, flags=os.EFD_CLOEXEC])¶
Створити та повернути дескриптор файлу подій. Дескриптори файлів підтримують raw
read()
іwrite()
з розміром буфера 8,select()
,poll()
тощо. Додаткову інформацію дивіться на сторінці довідки eventfd(2). За замовчуванням новий файловий дескриптор є non-inheritable.initval is the initial value of the event counter. The initial value must be a 32 bit unsigned integer. Please note that the initial value is limited to a 32 bit unsigned int although the event counter is an unsigned 64 bit integer with a maximum value of 264-2.
прапори можуть бути створені з
EFD_CLOEXEC
,EFD_NONBLOCK
іEFD_SEMAPHORE
.Якщо вказано
EFD_SEMAPHORE
і лічильник подій ненульовий,eventfd_read()
повертає 1 і зменшує лічильник на одиницю.Якщо
EFD_SEMAPHORE
не вказано, а лічильник подій ненульовий,eventfd_read()
повертає поточне значення лічильника подій і скидає лічильник до нуля.Якщо лічильник подій дорівнює нулю і
EFD_NONBLOCK
не вказано,eventfd_read()
блокує.eventfd_write()
збільшує лічильник подій. Блокує запис, якщо операція запису збільшить лічильник до значення, більшого за 264-2.Приклад:
import os # semaphore with start value '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC) try: # acquire semaphore v = os.eventfd_read(fd) try: do_work() finally: # release semaphore os.eventfd_write(fd, v) finally: os.close(fd)
Availability: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.10.
- os.eventfd_read(fd)¶
Зчитування значення з дескриптора файлу
eventfd()
і повернення 64-бітного беззнакового int. Функція не перевіряє, що fd єeventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.eventfd_write(fd, value)¶
Додайте значення до дескриптора файлу
eventfd()
. значення має бути 64-бітним беззнаковим цілим. Функція не перевіряє, що fd єeventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_CLOEXEC¶
Установіть прапорець close-on-exec для нового файлового дескриптора
eventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_NONBLOCK¶
Установіть позначку статусу
O_NONBLOCK
для нового файлового дескриптораeventfd()
.Availability: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_SEMAPHORE¶
Provide semaphore-like semantics for reads from an
eventfd()
file descriptor. On read the internal counter is decremented by one.Availability: Linux >= 2.6.30
Added in version 3.10.
Розширені атрибути Linux¶
Added in version 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)¶
Видаляє розширений атрибут файлової системи attribute із path. attribute має бути байтом або str (прямо чи опосередковано через інтерфейс
PathLike
). Якщо це рядок, він кодується за допомогою filesystem encoding and error handler.Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.
Викликає подію аудиту
os.removexattr
з аргументамиpath
,attribute
.Змінено в версії 3.6: Приймає path-like object для path і attribute.
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
Установіть attribute розширеного атрибута файлової системи на path у value. атрибут має бути байтом або рядком без вбудованих NUL (прямо чи опосередковано через інтерфейс
PathLike
). Якщо це str, він закодований за допомогою filesystem encoding and error handler. прапорцями можуть бутиXATTR_REPLACE
абоXATTR_CREATE
. Якщо заданоXATTR_REPLACE
, а атрибут не існує, буде створеноENODATA
. Якщо заданоXATTR_CREATE
і атрибут уже існує, атрибут не буде створено, і буде викликаноEEXISTS
.Ця функція може підтримувати зазначення файлового дескриптора і неперехід за символічними посиланнями.
Примітка
Помилка у версіях ядра 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
.Availability: Windows.
Added in version 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 theexecl*()
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()
, andexecvpe()
) will use thePATH
environment variable to locate the program file. When the environment is being replaced (using one of theexec*e
variants, discussed in the next paragraph), the new environment is used as the source of thePATH
variable. The other variants,execl()
,execle()
,execv()
, andexecve()
, will not use thePATH
variable to locate the executable; path must contain an appropriate absolute or relative path. Relative paths must include at least one slash, even on Windows, as plain names will not be resolved.Для
execle()
,execlpe()
,execve()
іexecvpe()
(зауважте, що всі вони закінчуються на «e»), параметр env має бути зіставленням який використовується для визначення змінних середовища для нового процесу (вони використовуються замість середовища поточного процесу); функціїexecl()
,execlp()
,execv()
іexecvp()
змушують новий процес успадковувати середовище поточного процесу.Для
execve()
на деяких платформах шлях також може бути вказаний як дескриптор відкритого файлу. Ця функція може не підтримуватися на вашій платформі; ви можете перевірити, чи він доступний, за допомогоюos.supports_fd
. Якщо він недоступний, його використання призведе до помилкиNotImplementedError
.Викликає подію аудиту
os.exec
з аргументамиpath
,args
,env
.Availability: Unix, Windows, not Emscripten, not WASI.
Змінено в версії 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 afork()
.
Наступні коди виходу визначені та можуть використовуватися з _exit()
, хоча вони не є обов’язковими. Зазвичай вони використовуються для системних програм, написаних мовою Python, таких як зовнішня програма доставки команд поштового сервера.
Примітка
Деякі з них можуть бути недоступні на всіх платформах Unix, оскільки існують певні відмінності. Ці константи визначені там, де вони визначені базовою платформою.
- os.EX_OK¶
Exit code that means no error occurred. May be taken from the defined value of
EXIT_SUCCESS
on some platforms. Generally has a value of zero.Availability: Unix, Windows.
- os.EX_USAGE¶
Код виходу, який означає, що команда була використана неправильно, наприклад, коли вказано неправильну кількість аргументів.
Availability: Unix, not Emscripten, not WASI.
- os.EX_DATAERR¶
Код виходу, який означає, що введені дані були неправильними.
Availability: Unix, not Emscripten, not WASI.
- os.EX_NOINPUT¶
Код виходу, який означає, що вхідний файл не існував або не читався.
Availability: Unix, not Emscripten, not WASI.
- os.EX_NOUSER¶
Код виходу, який означає, що вказаний користувач не існував.
Availability: Unix, not Emscripten, not WASI.
- os.EX_NOHOST¶
Код виходу, який означає, що вказаний хост не існував.
Availability: Unix, not Emscripten, not WASI.
- os.EX_UNAVAILABLE¶
Код виходу, який означає, що потрібна послуга недоступна.
Availability: Unix, not Emscripten, not WASI.
- os.EX_SOFTWARE¶
Код виходу, який означає, що виявлено внутрішню помилку програмного забезпечення.
Availability: Unix, not Emscripten, not WASI.
- os.EX_OSERR¶
Код виходу, який означає, що виявлено помилку операційної системи, наприклад неможливість розгалуження або створення каналу.
Availability: Unix, not Emscripten, not WASI.
- os.EX_OSFILE¶
Код виходу, який означає, що якийсь системний файл не існував, його неможливо відкрити або якийсь інший тип помилки.
Availability: Unix, not Emscripten, not WASI.
- os.EX_CANTCREAT¶
Код виходу означає, що вказаний користувачем вихідний файл неможливо створити.
Availability: Unix, not Emscripten, not WASI.
- os.EX_IOERR¶
Код виходу, який означає, що сталася помилка під час виконання вводу-виводу для деякого файлу.
Availability: Unix, not Emscripten, not WASI.
- os.EX_TEMPFAIL¶
Код виходу, який означає, що стався тимчасовий збій. Це вказує на те, що насправді не може бути помилкою, наприклад мережеве підключення, яке не вдалося встановити під час повторної операції.
Availability: Unix, not Emscripten, not WASI.
- os.EX_PROTOCOL¶
Код виходу, який означає, що обмін протоколом був незаконним, недійсним або незрозумілим.
Availability: Unix, not Emscripten, not WASI.
- os.EX_NOPERM¶
Код виходу, який означає, що було недостатньо дозволів для виконання операції (але не призначений для проблем файлової системи).
Availability: Unix, not Emscripten, not WASI.
- os.EX_CONFIG¶
Код виходу, який означає, що сталася якась помилка конфігурації.
Availability: Unix, not Emscripten, not WASI.
- os.EX_NOTFOUND¶
Код виходу, який означає щось на зразок «запис не знайдено».
Availability: Unix, not Emscripten, not WASI.
- os.fork()¶
Розгалужуйте дочірній процес. Повертає
0
у дочірньому процесі та ідентифікатор дочірнього процесу в батьківському. У разі виникнення помилки виникаєOSError
.Зауважте, що деякі платформи, включаючи FreeBSD <= 6.3 і Cygwin, мають відомі проблеми під час використання
fork()
із потоку.Викликає подію аудиту
os.fork
без аргументів.Попередження
If you use TLS sockets in an application calling
fork()
, see the warning in thessl
documentation.Попередження
On macOS the use of this function is unsafe when mixed with using higher-level system APIs, and that includes using
urllib.request
.Змінено в версії 3.8: Виклик
fork()
у підінтерпретаторі більше не підтримується (виникаєRuntimeError
).Змінено в версії 3.12: If Python is able to detect that your process has multiple threads,
os.fork()
now raises aDeprecationWarning
.We chose to surface this as a warning, when detectable, to better inform developers of a design problem that the POSIX platform specifically notes as not supported. Even in code that appears to work, it has never been safe to mix threading with
os.fork()
on POSIX platforms. The CPython runtime itself has always made API calls that are not safe for use in the child process when threads existed in the parent (such asmalloc
andfree
).Users of macOS or users of libc or malloc implementations other than those typically found in glibc to date are among those already more likely to experience deadlocks running such code.
See this discussion on fork being incompatible with threads for technical details of why we’re surfacing this longstanding platform compatibility problem to developers.
Availability: POSIX, not Emscripten, not WASI.
- os.forkpty()¶
Розгалужуйте дочірній процес, використовуючи новий псевдотермінал як керуючий термінал дочірнього процесу. Повертає пару
(pid, fd)
, де pid є0
у дочірньому, ідентифікатор нового дочірнього процесу в батьківському, а fd є дескриптором файлу головного кінця псевдотермінал. Для більш портативного підходу використовуйте модульpty
. У разі виникнення помилки виникаєOSError
.Викликає подію аудиту
os.forkpty
без аргументів.Попередження
On macOS the use of this function is unsafe when mixed with using higher-level system APIs, and that includes using
urllib.request
.Змінено в версії 3.8: Виклик
forkpty()
у підінтерпретаторі більше не підтримується (виникаєRuntimeError
).Змінено в версії 3.12: If Python is able to detect that your process has multiple threads, this now raises a
DeprecationWarning
. See the longer explanation onos.fork()
.Availability: Unix, not Emscripten, not WASI.
- os.kill(pid, sig, /)¶
Надішліть сигнал sig процесу pid. Константи для конкретних сигналів, доступних на хост-платформі, визначаються в модулі
signal
.Windows: The
signal.CTRL_C_EVENT
andsignal.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.Дивіться також
signal.pthread_kill()
.Викликає подію аудиту
os.kill
з аргументамиpid
,sig
.Availability: Unix, Windows, not Emscripten, not WASI.
Змінено в версії 3.2: Додана підтримка Windows.
- os.killpg(pgid, sig, /)¶
Надішліть сигнал sig до групи процесів pgid.
Викликає подію аудиту
os.killpg
з аргументамиpgid
,sig
.Availability: Unix, not Emscripten, not WASI.
- os.nice(increment, /)¶
Додайте приріст до «витонченості» процесу. Поверніть нову привабливість.
Availability: Unix, not Emscripten, not WASI.
- os.pidfd_open(pid, flags=0)¶
Return a file descriptor referring to the process pid with flags set. This descriptor can be used to perform process management without races and signals.
Додаткову інформацію можна знайти на сторінці довідки pidfd_open(2).
Availability: Linux >= 5.3
Added in version 3.9.
- os.PIDFD_NONBLOCK¶
This flag indicates that the file descriptor will be non-blocking. If the process referred to by the file descriptor has not yet terminated, then an attempt to wait on the file descriptor using waitid(2) will immediately return the error
EAGAIN
rather than blocking.
Availability: Linux >= 5.10
Added in version 3.12.
- os.plock(op, /)¶
Блокування сегментів програми в пам’яті. Значення op (визначене в
<sys/lock.h>
) визначає, які сегменти заблоковано.Availability: Unix, not Emscripten, not WASI.
- 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 have the same meaning as the corresponding argument to the built-inopen()
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
; перегляньте документацію цього класу, щоб дізнатися про більш потужні способи керування підпроцесами та спілкування з ними.Availability: not Emscripten, not WASI.
Примітка
The Python UTF-8 Mode affects encodings used for cmd and pipe contents.
popen()
is a simple wrapper aroundsubprocess.Popen
. Usesubprocess.Popen
orsubprocess.run()
to control options like encodings.
- 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()
, andposix_spawn_file_actions_adddup2()
API calls used to prepare for theposix_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 isFalse
, 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 libraryPOSIX_SPAWN_RESETIDS
flag.If the setsid argument is
True
, it will create a new session ID forposix_spawn
. setsid requiresPOSIX_SPAWN_SETSID
orPOSIX_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 ofNone
in the place of the scheduler policy indicates that is not being provided. This argument is a combination of the C libraryPOSIX_SPAWN_SETSCHEDPARAM
andPOSIX_SPAWN_SETSCHEDULER
flags.Викликає подію аудиту
os.posix_spawn
з аргументамиpath
,argv
,env
.Added in version 3.8.
Availability: Unix, not Emscripten, not WASI.
- 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
.Added in version 3.8.
Availability: POSIX, not Emscripten, not WASI.
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()
.Немає способу скасувати реєстрацію функції.
Availability: Unix, not Emscripten, not WASI.
Added in version 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 thespawnl*()
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, not Emscripten, not WASI.
spawnlp()
,spawnlpe()
,spawnvp()
andspawnvpe()
are not available on Windows.spawnle()
andspawnve()
are not thread-safe on Windows; we advise you to use thesubprocess
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, thespawn*
functions will return as soon as the new process has been created, with the process id as the return value.Availability: Unix, Windows.
- os.P_WAIT¶
Possible value for the mode parameter to the
spawn*
family of functions. If this is given as mode, thespawn*
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.Availability: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
Можливі значення для параметра mode для сімейства функцій
spawn*
. Вони менш портативні, ніж перелічені вище.P_DETACH
подібний доP_NOWAIT
, але новий процес від’єднується від консолі процесу, що викликає. ЯкщоP_OVERLAY
використовується, поточний процес буде замінено; функціяspawn*
не повернеться.Availability: Windows.
- os.startfile(path[, operation][, arguments][, cwd][, show_cmd])¶
Запустіть файл із пов’язаною програмою.
When operation is not specified, 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
'open'
,'print'
and'edit'
(to be used on files) as well as'explore'
and'find'
(to be used on directories).Під час запуску програми вкажіть аргументи, які передаються як один рядок. Цей аргумент може не мати ефекту під час використання цієї функції для запуску документа.
Робочий каталог за замовчуванням успадковується, але може бути перевизначений аргументом cwd. Це має бути абсолютний шлях. Відносний шлях буде вирішено проти цього аргументу.
Use show_cmd to override the default window style. Whether this has any effect will depend on the application being launched. Values are integers as supported by the Win32
ShellExecute()
function.startfile()
повертається, щойно буде запущено відповідну програму. Немає можливості чекати, поки програма закриється, і немає способу отримати статус виходу програми. Параметр path відноситься до поточного каталогу або cwd. Якщо ви хочете використовувати абсолютний шлях, переконайтеся, що перший символ не є скісною рискою ('/'
). Використовуйтеpathlib
або функціюos.path.normpath()
, щоб переконатися, що шляхи правильно закодовані для 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
.Викликає подію аудиту
os.startfile/2
з аргументамиpath
,operation
,arguments
,cwd
,show_cmd
.Availability: Windows.
Змінено в версії 3.10: Додано аргументи arguments, cwd і show_cmd і подію аудиту
os.startfile/2
.
- 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
.Availability: Unix, Windows, not Emscripten, not WASI.
- 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
andsystem
are known; the other attributes are zero.Availability: Unix, Windows.
Змінено в версії 3.3: Тип повернення змінено з кортежу на кортежний об’єкт з іменованими атрибутами.
- os.wait()¶
Зачекайте на завершення дочірнього процесу та поверніть кортеж, що містить його pid та індикацію статусу виходу: 16-розрядне число, чий молодший байт є номером сигналу, що вбив процес, а старший байт є статусом виходу (якщо сигнал число дорівнює нулю); старший біт молодшого байта встановлюється, якщо було створено основний файл.
If there are no children that could be waited for,
ChildProcessError
is raised.waitstatus_to_exitcode()
можна використовувати для перетворення статусу виходу в код виходу.Availability: Unix, not Emscripten, not WASI.
Дивись також
The other
wait*()
functions documented below can be used to wait for the completion of a specific child process and have more options.waitpid()
is the only one also available on Windows.
- os.waitid(idtype, id, options, /)¶
Wait for the completion of a child process.
idtype can be
P_PID
,P_PGID
,P_ALL
, or (on Linux)P_PIDFD
. The interpretation of id depends on it; see their individual descriptions.options is an OR combination of flags. At least one of
WEXITED
,WSTOPPED
orWCONTINUED
is required;WNOHANG
andWNOWAIT
are additional optional flags.The return value is an object representing the data contained in the
siginfo_t
structure with the following attributes:si_pid
(process ID)si_uid
(real user ID of the child)si_signo
(alwaysSIGCHLD
)si_status
(the exit status or signal number, depending onsi_code
)si_code
(seeCLD_EXITED
for possible values)
If
WNOHANG
is specified and there are no matching children in the requested state,None
is returned. Otherwise, if there are no matching children that could be waited for,ChildProcessError
is raised.Availability: Unix, not Emscripten, not WASI.
Примітка
This function is not available on macOS.
Added in version 3.3.
- os.waitpid(pid, options, /)¶
Деталі цієї функції відрізняються в Unix і Windows.
В Unix: зачекайте на завершення дочірнього процесу, заданого ідентифікатором процесу pid, і поверніть кортеж, що містить ідентифікатор його процесу та вказівку статусу виходу (закодовано як для
wait()
). На семантику виклику впливає значення цілого числа options, яке має бути0
для нормальної роботи.Якщо pid більший за
0
,waitpid()
запитує інформацію про статус для цього конкретного процесу. Якщо pid дорівнює0
, запит стосується статусу будь-якого дочірнього елемента в групі поточного процесу. Якщо pid має значення-1
, запит стосується будь-якого дочірнього процесу поточного процесу. Якщо pid менший за-1
, статус запитується для будь-якого процесу в групі процесів-pid
(абсолютне значення pid).options is an OR combination of flags. If it contains
WNOHANG
and there are no matching children in the requested state,(0, 0)
is returned. Otherwise, if there are no matching children that could be waited for,ChildProcessError
is raised. Other options that can be used areWUNTRACED
andWCONTINUED
.У Windows: дочекайтеся завершення процесу, заданого дескриптором процесу pid, і поверніть кортеж, що містить pid, а його статус виходу зміщений вліво на 8 біт (зміщення полегшує використання функції на різних платформах). pid менше або дорівнює
0
не має особливого значення в Windows і викликає виключення. Значення цілого параметра не впливає. pid може посилатися на будь-який процес, ідентифікатор якого відомий, не обов’язково дочірній процес. Функціїspawn*
, викликані за допомогоюP_NOWAIT
, повертають відповідні дескриптори процесу.waitstatus_to_exitcode()
можна використовувати для перетворення статусу виходу в код виходу.Availability: Unix, Windows, not Emscripten, not WASI.
Змінено в версії 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 toresource.getrusage()
for details on resource usage information. The options argument is the same as that provided towaitpid()
andwait4()
.waitstatus_to_exitcode()
можна використовувати для перетворення статусу виходу в код виходу.Availability: Unix, not Emscripten, not WASI.
- 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 toresource.getrusage()
for details on resource usage information. The arguments towait4()
are the same as those provided towaitpid()
.waitstatus_to_exitcode()
можна використовувати для перетворення статусу виходу в код виходу.Availability: Unix, not Emscripten, not WASI.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
- os.P_PIDFD¶
These are the possible values for idtype in
waitid()
. They affect how id is interpreted:P_PID
- wait for the child whose PID is id.P_PGID
- wait for any child whose progress group ID is id.P_ALL
- wait for any child; id is ignored.P_PIDFD
- wait for the child identified by the file descriptor id (a process file descriptor created withpidfd_open()
).
Availability: Unix, not Emscripten, not WASI.
Примітка
P_PIDFD
is only available on Linux >= 5.4.Added in version 3.3.
Added in version 3.9: The
P_PIDFD
constant.
- os.WCONTINUED¶
This options flag for
waitpid()
,wait3()
,wait4()
, andwaitid()
causes child processes to be reported if they have been continued from a job control stop since they were last reported.Availability: Unix, not Emscripten, not WASI.
- os.WEXITED¶
This options flag for
waitid()
causes child processes that have terminated to be reported.The other
wait*
functions always report children that have terminated, so this option is not available for them.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.WSTOPPED¶
This options flag for
waitid()
causes child processes that have been stopped by the delivery of a signal to be reported.This option is not available for the other
wait*
functions.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
- os.WUNTRACED¶
This options flag for
waitpid()
,wait3()
, andwait4()
causes child processes to also be reported if they have been stopped but their current state has not been reported since they were stopped.This option is not available for
waitid()
.Availability: Unix, not Emscripten, not WASI.
- os.WNOHANG¶
This options flag causes
waitpid()
,wait3()
,wait4()
, andwaitid()
to return right away if no child process status is available immediately.Availability: Unix, not Emscripten, not WASI.
- os.WNOWAIT¶
This options flag causes
waitid()
to leave the child in a waitable state, so that a laterwait*()
call can be used to retrieve the child status information again.This option is not available for the other
wait*
functions.Availability: Unix, not Emscripten, not WASI.
- 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 bywaitid()
.Availability: Unix, not Emscripten, not WASI.
Added in version 3.3.
Змінено в версії 3.9: Додано значення
CLD_KILLED
іCLD_STOPPED
.
- 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()
.Availability: Unix, Windows, not Emscripten, not WASI.
Added in version 3.9.
Наступні функції приймають код стану процесу, який повертає system()
, wait()
або waitpid()
як параметр. Вони можуть бути використані для визначення розташування процесу.
- os.WCOREDUMP(status, /)¶
Повертає
True
, якщо для процесу було створено дамп ядра, інакше повертаєFalse
.Цю функцію слід використовувати, лише якщо
WIFSIGNALED()
має значення true.Availability: Unix, not Emscripten, not WASI.
- os.WIFCONTINUED(status)¶
Return
True
if a stopped child has been resumed by delivery ofSIGCONT
(if the process has been continued from a job control stop), otherwise returnFalse
.Перегляньте параметр
WCONTINUED
.Availability: Unix, not Emscripten, not WASI.
- os.WIFSTOPPED(status)¶
Повертає
True
, якщо процес було зупинено доставкою сигналу, інакше повертаєFalse
.WIFSTOPPED()
повертаєTrue
, лише якщо викликwaitpid()
було виконано за допомогою параметраWUNTRACED
або коли процес відстежується (див. ptrace(2) ).Availability: Unix, not Emscripten, not WASI.
- os.WIFSIGNALED(status)¶
Повертає
True
, якщо процес було припинено сигналом, інакше повертаєFalse
.Availability: Unix, not Emscripten, not WASI.
- os.WIFEXITED(status)¶
Повертає
True
, якщо процес завершився нормально, тобто викликомexit()
чи_exit()
, або шляхом повернення зmain()
; інакше повертаєFalse
.Availability: Unix, not Emscripten, not WASI.
- os.WEXITSTATUS(status)¶
Повернути статус виходу процесу.
Цю функцію слід використовувати, лише якщо
WIFEXITED()
має значення true.Availability: Unix, not Emscripten, not WASI.
- os.WSTOPSIG(status)¶
Повернути сигнал, який спричинив зупинку процесу.
Цю функцію слід використовувати, лише якщо
WIFSTOPPED()
має значення true.Availability: Unix, not Emscripten, not WASI.
- os.WTERMSIG(status)¶
Повертає номер сигналу, який викликав завершення процесу.
Цю функцію слід використовувати, лише якщо
WIFSIGNALED()
має значення true.Availability: Unix, not Emscripten, not WASI.
Інтерфейс до планувальника¶
Ці функції контролюють, як процес розподіляє процесорний час операційною системою. Вони доступні лише на деяких платформах Unix. Щоб отримати детальнішу інформацію, зверніться до сторінок довідки Unix.
Added in version 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 is restricted to.
If pid is zero, return the set of CPUs the calling thread of the current process 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
для номера помилки .Availability: Unix.
- os.confstr_names¶
Словник зіставляє імена, прийняті
confstr()
, до цілих значень, визначених для цих імен головною операційною системою. Це можна використовувати для визначення набору імен, відомих системі.Availability: Unix.
- os.cpu_count()¶
Return the number of logical CPUs in the system. Returns
None
if undetermined.This number is not equivalent to the number of logical CPUs the current process can use.
len(os.sched_getaffinity(0))
gets the number of logical CPUs the calling thread of the current process is restricted toAdded in version 3.4.
- os.getloadavg()¶
Повертає середню кількість процесів у черзі виконання системи за останні 1, 5 і 15 хвилин або викликає
OSError
, якщо середнє значення завантаження неможливо отримати.Availability: Unix.
- os.sysconf(name, /)¶
Повертає цілочисельні значення конфігурації системи. Якщо значення конфігурації, указане name, не визначено, повертається
-1
. Коментарі щодо параметра name дляconfstr()
також застосовуються тут; словник, який надає інформацію про відомі імена, надаєтьсяsysconf_names
.Availability: Unix.
- os.sysconf_names¶
Словник зіставляє імена, прийняті
sysconf()
, до цілих значень, визначених для цих імен головною операційною системою. Це можна використовувати для визначення набору імен, відомих системі.Availability: Unix.
Змінено в версії 3.11: Add
'SC_MINSIGSTKSZ'
name.
Наступні значення даних використовуються для підтримки операцій маніпулювання шляхом. Вони визначені для всіх платформ.
Операції вищого рівня над іменами шляхів визначені в модулі 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).Added in version 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
andGRND_NONBLOCK
.See also the Linux getrandom() manual page.
Availability: Linux >= 3.17.
Added in version 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
BCryptGenRandom()
.Дивись також
Модуль
secrets
забезпечує функції вищого рівня. Про простий у використанні інтерфейс генератора випадкових чисел, наданий вашою платформою, див.random.SystemRandom
.Змінено в версії 3.5: У Linux 3.17 і новіших версіях системний виклик
getrandom()
тепер використовується, якщо він доступний. У OpenBSD 5.6 і новіших версіях тепер використовується функція Cgetentropy()
. Ці функції уникають використання внутрішнього файлового дескриптора.Змінено в версії 3.5.2: У Linux, якщо системний виклик
getrandom()
блокує (пул ентропії urandom ще не ініціалізовано), поверніться до читання/dev/urandom
.Змінено в версії 3.6: У Linux
getrandom()
тепер використовується в режимі блокування для підвищення безпеки.Змінено в версії 3.11: On Windows,
BCryptGenRandom()
is used instead ofCryptGenRandom()
which is deprecated.
- os.GRND_NONBLOCK¶
За замовчуванням під час читання з
/dev/random
getrandom()
блокує, якщо випадкові байти недоступні, а під час читання з/dev/urandom
блокує, якщо пул ентропії не має ще не ініціалізовано.Якщо встановлено прапорець
GRND_NONBLOCK
, тоgetrandom()
не блокує в цих випадках, а замість цього негайно викликаєBlockingIOError
.Added in version 3.6.
- os.GRND_RANDOM¶
Якщо цей біт установлено, випадкові байти витягуються з пулу
/dev/random
замість пулу/dev/urandom
.Added in version 3.6.