Содержание страницы
os – Разные интерфейсы операционной системы¶os – Miscellaneous operating system interfaces
Этот модуль предоставляет переносимый способ использования функциональности, зависящей от операционной системы. Если нужно просто прочитать или записать файл, см. open(); для работы с путями предназначен модуль os.path; а если нужно прочитать все строки из всех файлов, указанных в командной строке – модуль fileinput. Для создания временных файлов и каталогов предназначен модуль tempfile, а для высокоуровневой работы с файлами и каталогами – модуль shutil.
Все встроенные модули Python, зависящие от операционной системы, устроены так, что одинаковая функциональность предоставляется через единый интерфейс; например, функция os.stat(path) возвращает информацию о состоянии path в одном и том же формате (который, кстати, берёт начало от интерфейса POSIX).
Расширения, характерные для конкретной операционной системы, также доступны через модуль os, однако их использование, конечно, угрожает переносимости!
Примечание
Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.
Примечание
Если не указано иное, все функции, для которых указано «Доступность: Unix», поддерживаются на Mac OS X, построенной на ядре Unix.
Примечание
Все функции этого модуля возбуждают исключение OSError в случае некорректных или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.
- os.name¶
- Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: 'posix', 'nt', 'mac', 'os2', 'ce', 'java'.
- os.path¶
- Соответствующий стандартный модуль, зависящий от операционной системы, для операций с путями, такой как posixpath или ntpath. Таким образом, при правильном импорте os.path.split(file) эквивалентно, но более переносимо, чем posixpath.split(file). Обратите внимание, что это также импортируемый модуль: его можно импортировать напрямую как os.path.
Параметры процесса¶Process Parameters
Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.
- os.environ¶
Объект отображения, представляющий строковое окружение. Например, environ['HOME'] – это путь к домашнему каталогу (на некоторых платформах), и эквивалентен getenv("HOME") в C.
Это отображение фиксируется при первом импорте модуля os, обычно во время запуска Python в рамках обработки site.py. Изменения окружения, сделанные после этого момента, не отражаются в os.environ, за исключением изменений, сделанных путём непосредственного изменения os.environ.
Если платформа поддерживает функцию putenv(), это отображение может использоваться как для изменения, так и для запроса окружения. putenv() будет вызываться автоматически при изменении отображения.
Примечание
Прямой вызов putenv() не изменяет os.environ, поэтому лучше изменять os.environ.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, установка environ может вызывать утечки памяти. Обратитесь к системной документации по putenv.
Если putenv() не предусмотрена, изменённая копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённое окружение.
Если платформа поддерживает функцию unsetenv(), можно удалять элементы из этого отображения для снятия переменных окружения. unsetenv() будет вызываться автоматически при удалении элемента из os.environ, а также при вызове одного из методов pop() или clear().
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
- Эти функции описаны в Files and Directories.
- os.ctermid()¶
- Возвращает имя файла, соответствующее управляющему терминалу процесса. Доступность: Unix.
- os.getegid()¶
- Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» на исполняемом файле в текущем процессе. Доступность: Unix.
- os.geteuid()¶
Возвращает эффективный идентификатор пользователя текущего процесса. Доступность: Unix.
- os.getgid()¶
Возвращает реальный идентификатор группы текущего процесса. Доступность: Unix.
- os.getgroups()¶
- Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом. Доступность: Unix.
- os.getlogin()¶
- Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей более удобно использовать переменную окружения LOGNAME, чтобы узнать, кто пользователь, или pwd.getpwuid(os.getuid())[0], чтобы получить имя входа по текущему эффективному идентификатору пользователя. Доступность: Unix.
- os.getpgid(pid)¶
- Возвращает идентификатор группы процесса для процесса с идентификатором pid. Если pid равен 0, возвращается идентификатор группы текущего процесса. Доступность: Unix.
- os.getpgrp()¶
Возвращает идентификатор текущей группы процессов. Доступность: Unix.
- os.getpid()¶
Возвращает идентификатор текущего процесса. Доступность: Unix, Windows.
- os.getppid()¶
Возвращает идентификатор процесса родителя. Доступность: Unix.
- os.getuid()¶
Возвращает идентификатор пользователя текущего процесса. Доступность: Unix.
- os.getenv(varname[, value])¶
- Возвращает значение переменной окружения varname, если она существует, или value, если её нет. value по умолчанию равен None. Доступность: большинство разновидностей Unix, Windows.
- os.putenv(varname, value)¶
Устанавливает переменную окружения с именем varname в строку value. Такие изменения окружения влияют на подпроцессы, запущенные с помощью os.system(), popen() или fork() и execv(). Доступность: большинство разновидностей Unix, Windows.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, изменение environ может привести к утечкам памяти. Обратитесь к системной документации по putenv.
Когда putenv() поддерживается, присваивания элементам os.environ автоматически преобразуются в соответствующие вызовы putenv(); однако вызовы putenv() не обновляют os.environ, так что на самом деле предпочтительнее присваивать значения элементам os.environ.
- os.setegid(egid)¶
- Устанавливает эффективный идентификатор группы текущего процесса. Доступность: Unix.
- os.seteuid(euid)¶
- Устанавливает эффективный идентификатор пользователя текущего процесса. Доступность: Unix.
- os.setgid(gid)¶
- Устанавливает идентификатор группы текущего процесса. Доступность: Unix.
- os.setgroups(groups)¶
- Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в groups. groups должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю. Доступность: Unix.
- os.setpgrp()¶
- Вызывает системный вызов setpgrp или setpgrp(0, 0) в зависимости от того, какая версия реализована (если реализована). Подробнее о семантике – в документации Unix. Доступность: Unix.
- os.setpgid(pid, pgrp)¶
- Вызывает системный вызов setpgid, чтобы установить идентификатор группы процесса с идентификатором pid равным идентификатору группы pgrp. Подробнее о семантике – в документации Unix. Доступность: Unix.
- os.setreuid(ruid, euid)¶
- Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса. Доступность: Unix.
- os.setregid(rgid, egid)¶
- Устанавливает реальный и эффективный идентификаторы группы текущего процесса. Доступность: Unix.
- os.getsid(pid)¶
- Вызывает системный вызов getsid. Подробнее о семантике – в документации Unix. Доступность: Unix.
- os.setsid()¶
- Вызывает системный вызов setsid. Подробнее о семантике – в документации Unix. Доступность: Unix.
- os.setuid(uid)¶
Устанавливает идентификатор пользователя текущего процесса. Доступность: Unix.
- os.strerror(code)¶
- Возвращает сообщение об ошибке для кода ошибки из code. На платформах, где strerror возвращает NULL при передаче неизвестного номера ошибки, вызывается исключение ValueError. Доступность: Unix, Windows.
- os.umask(mask)¶
- Устанавливает текущую числовую umask и возвращает предыдущую umask. Доступность: Unix, Windows.
- os.uname()¶
Возвращает кортеж из 5 элементов, содержащий информацию, идентифицирующую текущую операционную систему. Кортеж содержит 5 строк: (sysname, nodename, release, version, machine). В некоторых системах nodename усекается до 8 символов или до ведущего компонента; лучший способ получить имя хоста – socket.gethostname() или даже socket.gethostbyaddr(socket.gethostname()). Доступность: современные версии Unix.
- os.unsetenv(varname)¶
Удаляет переменную окружения с именем varname. Такие изменения окружения влияют на подпроцессы, запущенные с помощью os.system(), popen() или fork() и execv(). Доступность: большинство версий Unix, Windows.
Если unsetenv() поддерживается, удаление элементов из os.environ автоматически преобразуется в соответствующий вызов unsetenv(); однако вызовы unsetenv() не обновляют os.environ, поэтому на самом деле предпочтительнее удалять элементы из os.environ.
Создание файловых объектов¶File Object Creation
Эти функции создают новые файловые объекты. (См. также open().)
- os.fdopen(fd[, mode[, bufsize]])¶
Возвращает открытый файловый объект, связанный с файловым дескриптором fd. Аргументы mode и bufsize имеют то же значение, что и соответствующие аргументы встроенной функции open(). Доступность: Unix, Windows.
Если указан, аргумент mode должен начинаться с одной из букв 'r', 'w' или 'a'; в противном случае возбуждается ValueError.
В Unix, когда аргумент mode начинается с 'a', на файловом дескрипторе устанавливается флаг O_APPEND (который реализация fdopen уже делает на большинстве платформ).
Операции с файловыми дескрипторами¶File Descriptor Operations
Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.
Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.
- os.close(fd)¶
Закрывает файловый дескриптор fd. Доступность: Unix, Windows.
- os.closerange(fd_low, fd_high)¶
Закрывает все файловые дескрипторы от fd_low (включительно) до fd_high (не включая), игнорируя ошибки. Доступность: Unix, Windows. Эквивалентно:
for fd in xrange(fd_low, fd_high): try: os.close(fd) except OSError: pass
- os.device_encoding(fd)¶
- Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; иначе возвращает None.
- os.dup(fd)¶
- Возвращает дубликат файлового дескриптора fd. Доступность: Unix, Windows.
- os.dup2(fd, fd2)¶
- Дублирует файловый дескриптор fd в fd2, предварительно закрывая последний, если необходимо. Доступность: Unix, Windows.
- os.fchmod(fd, mode)¶
- Изменяет режим файла, заданного fd, на числовой mode. Смотрите документацию по chmod() для возможных значений mode. Доступность: Unix.
- os.fchown(fd, uid, gid)¶
- Изменяет идентификатор владельца и группы файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1. Доступность: Unix.
- os.fdatasync(fd)¶
- Принудительно записывает файл с файловым дескриптором fd на диск. Не принуждает обновление метаданных. Доступность: Unix.
- os.fpathconf(fd, name)¶
Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. name указывает значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре pathconf_names. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для name. Доступность: Unix.
Если name – строка и она неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно есть в pathconf_names, возбуждается OSError с кодом ошибки errno.EINVAL.
- os.fstat(fd)¶
- Возвращает статус для файлового дескриптора fd, как stat(). Доступность: Unix, Windows.
- os.fstatvfs(fd)¶
- Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором fd, как statvfs(). Доступность: Unix.
- os.fsync(fd)¶
Принудительно записывает файл с файловым дескриптором fd на диск. В Unix вызывает встроенную функцию fsync; в Windows – функцию MS _commit.
Если у вас есть файловый объект Python f, сначала выполните f.flush(), а затем os.fsync(f.fileno()), чтобы гарантировать, что все внутренние буферы, связанные с f, будут записаны на диск. Доступность: Unix, Windows.
- os.ftruncate(fd, length)¶
- Усекает файл, соответствующий файловому дескриптору fd, так чтобы его размер не превышал length байт. Доступность: Unix.
- os.isatty(fd)¶
- Возвращает True, если файловый дескриптор fd открыт и подключён к устройству, подобному tty, иначе False. Доступность: Unix.
- os.lseek(fd, pos, how)¶
- Устанавливает текущую позицию файлового дескриптора fd в позицию pos с модификатором how: SEEK_SET или 0 – установить позицию относительно начала файла; SEEK_CUR или 1 – относительно текущей позиции; os.SEEK_END или 2 – относительно конца файла. Доступность: Unix, Windows.
- os.open(file, flags[, mode])¶
Открывает файл file и устанавливает различные флаги в соответствии с flags, а также, возможно, его режим в соответствии с mode. Режим по умолчанию mode – 0o777 (восьмеричный), при этом сначала маскируется текущее значение umask. Возвращает файловый дескриптор для только что открытого файла. Доступность: Unix, Windows.
Описание значений флагов и режимов см. в документации по среде выполнения C; константы флагов (например, O_RDONLY и O_WRONLY) также определены в этом модуле (см. ниже).
- os.openpty()¶
Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов (master, slave) для pty и tty соответственно. Для (чуть более) переносимого подхода используйте модуль pty. Доступность: некоторые разновидности Unix.
- os.pipe()¶
- Создаёт канал. Возвращает пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно. Доступность: Unix, Windows.
- os.read(fd, n)¶
Читает не более n байт из файлового дескриптора fd. Возвращает строку, содержащую прочитанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустая строка. Доступность: Unix, Windows.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому open() или pipe(). Для чтения «файлового объекта», возвращённого встроенной функцией open() или popen(), или fdopen(), или sys.stdin, используйте его методы read() или readline().
- os.tcgetpgrp(fd)¶
- Возвращает группу процессов, связанную с терминалом, заданным fd (открытый файловый дескриптор, возвращённый open()). Доступность: Unix.
- os.tcsetpgrp(fd, pg)¶
- Устанавливает группу процессов, связанную с терминалом, заданным fd (открытый файловый дескриптор, возвращённый open()), в pg. Доступность: Unix.
- os.ttyname(fd)¶
- Возвращает строку, указывающую терминальное устройство, связанное с файловым дескриптором fd. Если fd не связан с терминальным устройством, возбуждается исключение. Доступность: Unix.
- os.write(fd, str)¶
Записывает строку str в файловый дескриптор fd. Возвращает количество байт, фактически записанных. Доступность: Unix, Windows.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому open() или pipe(). Для записи в «файловый объект», возвращённый встроенной функцией open() или popen(), или fdopen(), или sys.stdout, или sys.stderr, используйте его метод write().
Следующие константы являются вариантами параметра flags для функции open(). Их можно комбинировать с помощью побитового оператора OR |. Некоторые из них доступны не на всех платформах. Описания их доступности и использования см. на странице руководства open(2) в Unix или на MSDN <http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx> в Windows.
- os.O_RDONLY¶
- os.O_WRONLY¶
- os.O_RDWR¶
- os.O_APPEND¶
- os.O_CREAT¶
- os.O_EXCL¶
- os.O_TRUNC¶
- Эти константы доступны в Unix и Windows.
- os.O_DSYNC¶
- os.O_RSYNC¶
- os.O_SYNC¶
- os.O_NDELAY¶
- os.O_NONBLOCK¶
- os.O_NOCTTY¶
- os.O_SHLOCK¶
- os.O_EXLOCK¶
- Эти константы доступны только в Unix.
- os.O_BINARY¶
- os.O_NOINHERIT¶
- os.O_SHORT_LIVED¶
- os.O_TEMPORARY¶
- os.O_RANDOM¶
- os.O_SEQUENTIAL¶
- os.O_TEXT¶
- Эти константы доступны только в Windows.
Файлы и каталоги¶Files and Directories
- os.access(path, mode)¶
Используйте реальные uid/gid для проверки доступа к path. Обратите внимание, что большинство операций используют эффективные uid/gid, поэтому эту функцию можно использовать в среде suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к path. mode должно быть F_OK для проверки существования path, или оно может быть включающим OR одного или нескольких из R_OK, W_OK, и X_OK для проверки разрешений. Возвращает True, если доступ разрешен, False, если нет. Смотрите man-страницу Unix access(2) для дополнительной информации. Доступность: Unix, Windows.
Примечание
Использование access() для проверки, авторизован ли пользователь, например, для открытия файла, перед фактическим открытием с помощью open() создает уязвимость безопасности, потому что пользователь может использовать короткий временной интервал между проверкой и открытием файла для манипуляции им.
Примечание
Операции ввода-вывода могут завершаться ошибкой, даже если access() показывает, что они должны выполниться успешно, особенно для операций с сетевыми файловыми системами, семантика разрешений которых может выходить за рамки обычной POSIX-модели битов разрешений.
- os.F_OK¶
- Значение, которое передаётся в параметр mode функции access() для проверки существования path.
- os.R_OK¶
- Значение, которое включается в параметр mode функции access() для проверки доступности чтения path.
- os.W_OK¶
- Значение, которое включается в параметр mode функции access() для проверки возможности записи path.
- os.X_OK¶
- Значение, которое включается в параметр mode функции access() для определения, является ли path исполняемым.
- os.chdir(path)¶
Изменяет текущий рабочий каталог на path. Доступность: Unix, Windows.
- os.fchdir(fd)¶
- Изменяет текущий рабочий каталог на каталог, представленный файловым дескриптором fd. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл. Доступность: Unix.
- os.getcwd()¶
- Возвращает строку, представляющую текущий рабочий каталог. На платформах Unix эта функция может вызвать UnicodeDecodeError, если имя текущего каталога не может быть декодировано в кодировке файловой системы. Используйте getcwdb(), если нужно, чтобы вызов никогда не завершался ошибкой. Доступность: Unix, Windows.
- os.getcwdb()¶
- Возвращает байтовую строку, представляющую текущий рабочий каталог. Доступность: Unix, Windows.
- os.chflags(path, flags)¶
Устанавливает флаги path в числовое flags. flags может принимать комбинацию (побитовое ИЛИ) следующих значений (как определено в модуле stat):
- UF_NODUMP
- UF_IMMUTABLE
- UF_APPEND
- UF_OPAQUE
- UF_NOUNLINK
- SF_ARCHIVED
- SF_IMMUTABLE
- SF_APPEND
- SF_NOUNLINK
- SF_SNAPSHOT
Доступность: Unix.
- os.chroot(path)¶
- Изменяет корневую директорию текущего процесса на path. Доступность: Unix.
- os.chmod(path, mode)¶
Изменяет режим path на числовой mode. mode может принимать одно из следующих значений (как определено в модуле stat) или их побитовые OR-комбинации:
- stat.S_ISUID
- stat.S_ISGID
- stat.S_ENFMT
- stat.S_ISVTX
- stat.S_IREAD
- stat.S_IWRITE
- stat.S_IEXEC
- stat.S_IRWXU
- stat.S_IRUSR
- stat.S_IWUSR
- stat.S_IXUSR
- stat.S_IRWXG
- stat.S_IRGRP
- stat.S_IWGRP
- stat.S_IXGRP
- stat.S_IRWXO
- stat.S_IROTH
- stat.S_IWOTH
- stat.S_IXOTH
Доступность: Unix, Windows.
Примечание
Хотя Windows поддерживает chmod(), с её помощью можно установить только флаг «только для чтения» (с помощью констант stat.S_IWRITE и stat.S_IREAD или соответствующего целочисленного значения). Все остальные биты игнорируются.
- os.chown(path, uid, gid)¶
- Изменяет идентификаторы владельца и группы path на числовые uid и gid. Чтобы оставить один из идентификаторов без изменений, задайте ему значение -1. Доступность: Unix.
- os.lchflags(path, flags)¶
- Устанавливает флаги path в числовое значение flags, как chflags(), но не переходит по символическим ссылкам. Доступность: Unix.
- os.lchmod(path, mode)¶
- Изменяет режим path на числовое значение mode. Если path является символической ссылкой, это влияет на саму ссылку, а не на целевой объект. Смотрите документацию chmod() для возможных значений mode. Доступность: Unix.
- os.lchown(path, uid, gid)¶
- Изменяет идентификаторы владельца и группы path на числовые uid и gid. Эта функция не переходит по символическим ссылкам. Доступность: Unix.
- os.link(src, dst)¶
- Создаёт жёсткую ссылку, указывающую на src, с именем dst. Доступность: Unix.
- os.listdir(path)¶
Возвращает список, содержащий имена записей в каталоге, заданном path. Список находится в произвольном порядке. Он не включает специальные записи '.' и '..', даже если они присутствуют в каталоге. Доступность: Unix, Windows.
Эта функция может вызываться с аргументом типа bytes или string. В случае bytes все имена файлов будут перечислены так, как их возвращает нижележащий API. В случае string имена файлов будут декодированы с использованием кодировки файловой системы, и пропущены, если произойдёт ошибка декодирования.
- os.lstat(path)¶
- Как stat(), но не переходит по символическим ссылкам. Это псевдоним для stat() на платформах, не поддерживающих символические ссылки, например, Windows.
- os.mkfifo(path[, mode])¶
Создаёт FIFO (именованный канал) с именем path и числовым режимом mode. Значение mode по умолчанию – 0o666 (восьмеричное). Текущее значение umask сначала вычитается из режима. Доступность: Unix.
FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют, пока они не будут удалены (например, с помощью os.unlink()). Обычно FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO на чтение, а клиент – на запись. Обратите внимание, что mkfifo() не открывает FIFO – она только создаёт точку встречи.
- os.mknod(filename[, mode=0o600, device])¶
- Создает узел файловой системы (файл, специальный файл устройства или именованный канал) с именем filename. mode определяет как права доступа, так и тип создаваемого узла, объединяя (побитовым ИЛИ) с одним из stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, и stat.S_IFIFO (эти константы доступны в stat). Для stat.S_IFCHR и stat.S_IFBLK параметр device определяет вновь создаваемый специальный файл устройства (вероятно, с помощью os.makedev()), в противном случае он игнорируется.
- os.major(device)¶
- Извлекает старший номер устройства из сырого номера устройства (обычно из поля st_dev или st_rdev из stat).
- os.minor(device)¶
- Извлекает младший номер устройства из сырого номера устройства (обычно из поля st_dev или st_rdev из stat).
- os.makedev(major, minor)¶
- Составляет сырой номер устройства из старшего и младшего номеров устройства.
- os.mkdir(path[, mode])¶
Создаёт каталог с именем path и числовым режимом доступа mode. Значение mode по умолчанию – 0o777 (восьмеричное). В некоторых системах mode игнорируется. Если он используется, сначала применяется маска текущего значения umask. Доступно: Unix, Windows.
Также можно создавать временные каталоги; см. функцию tempfile.mkdtemp() модуля tempfile.
- os.makedirs(path[, mode])¶
Функция рекурсивного создания каталогов. Как и mkdir(), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога. Вызывает исключение error, если конечный каталог уже существует или не может быть создан. Значение mode по умолчанию – 0o777 (восьмеричное). В некоторых системах mode игнорируется. Если он используется, сначала применяется маска текущего значения umask.
Примечание
makedirs() может работать некорректно, если в создаваемых элементах пути содержатся os.pardir.
Эта функция корректно обрабатывает UNC-пути.
- os.pathconf(path, name)¶
Возвращает информацию о системной конфигурации для указанного файла. Параметр name определяет запрашиваемое значение конфигурации; это может быть строка, являющаяся именем определённого системного значения. Эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе, перечислены в словаре pathconf_names. Для переменных конфигурации, не включённых в это соответствие, также допускается передача целого числа в качестве name. Доступно: Unix.
Если name – строка и она неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно есть в pathconf_names, возбуждается OSError с кодом ошибки errno.EINVAL.
- os.pathconf_names¶
- Словарь, сопоставляющий имена, принимаемые pathconf() и fpathconf(), целочисленным значениям, определённым для этих имён операционной системой хоста. Может использоваться для определения набора имён, известных системе. Доступность: Unix.
- os.readlink(path)¶
Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результатом может быть как абсолютный, так и относительный путь; если он относительный, его можно преобразовать в абсолютный с помощью os.path.join(os.path.dirname(path), result).
Если path является строковым объектом, результат тоже будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если path является объектом bytes, результат будет объектом bytes.
Доступность: Unix.
- os.remove(path)¶
- Удаляет файл path. Если path является каталогом, вызывается исключение OSError; для удаления каталога используйте rmdir(). Эта функция идентична unlink(), описанной ниже. В Windows попытка удалить занятый файл приводит к возникновению исключения; в Unix запись каталога удаляется, но выделенное файлу место не освобождается, пока исходный файл не перестанет использоваться. Доступно: Unix, Windows.
- os.removedirs(path)¶
Удаляет каталоги рекурсивно. Работает как rmdir(), за исключением того, что после успешного удаления конечного каталога removedirs() пытается последовательно удалить все родительские каталоги, указанные в path, пока не возникнет ошибка (которая игнорируется, поскольку обычно означает, что родительский каталог не пуст). Например, os.removedirs('foo/bar/baz') сначала удалит каталог 'foo/bar/baz', а затем удалит 'foo/bar' и 'foo', если они пусты. Возбуждается OSError, если конечный каталог не удалось удалить.
- os.rename(src, dst)¶
- Переименовывает файл или каталог src в dst. Если dst является каталогом, будет вызвано исключение OSError. В Unix, если dst существует и является файлом, он будет бесшумно заменён при наличии у пользователя соответствующих прав. В некоторых версиях Unix операция может завершиться ошибкой, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если dst уже существует, будет вызвано исключение OSError, даже если это файл; атомарное переименование может быть невозможно, когда dst указывает на существующий файл. Доступно: Unix, Windows.
- os.renames(old, new)¶
Рекурсивная функция переименования каталогов или файлов. Работает как rename(), но сначала пытается создать все промежуточные каталоги, необходимые для правильного нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, удаляются с помощью removedirs().
Примечание
Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.
- os.rmdir(path)¶
- Удаляет каталог path. Доступно: Unix, Windows.
- os.stat(path)¶
Выполняет системный вызов stat для указанного пути. Возвращаемое значение – объект, атрибуты которого соответствуют полям структуры stat, а именно: st_mode (биты защиты), st_ino (номер inode), st_dev (устройство), st_nlink (количество жёстких ссылок), st_uid (идентификатор пользователя-владельца), st_gid (идентификатор группы-владельца), st_size (размер файла в байтах), st_atime (время последнего доступа), st_mtime (время последнего изменения содержимого), st_ctime (зависит от платформы; время последнего изменения метаданных в Unix или время создания в Windows):
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo (33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732) >>> statinfo.st_size 926L >>>
В некоторых системах Unix (например, Linux) также могут быть доступны следующие атрибуты: st_blocks (количество блоков, выделенных для файла), st_blksize (размер блока файловой системы), st_rdev (тип устройства, если inode является устройством). st_flags (определяемые пользователем флаги для файла).
В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться только при попытке их использования от root): st_gen (номер поколения файла), st_birthtime (время создания файла).
В системах Mac OS также могут быть доступны следующие атрибуты: st_rsize, st_creator, st_type.
Для обратной совместимости возвращаемое значение stat() также доступно в виде кортежа как минимум из 10 целых чисел, представляющих наиболее важные (и переносимые) поля структуры stat, в порядке st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. Некоторые реализации могут добавлять в конец дополнительные элементы. Стандартный модуль stat определяет функции и константы, полезные для извлечения информации из структуры stat. (В Windows некоторые поля заполняются фиктивными значениями.)
Примечание
Точное значение и разрешение членов st_atime, st_mtime и st_ctime зависят от операционной системы и файловой системы. Например, в системах Windows с файловыми системами FAT или FAT32 st_mtime имеет разрешение 2 секунды, а st_atime – всего 1 день. Подробнее см. в документации вашей операционной системы.
Доступность: Unix, Windows.
- os.stat_float_times([newvalue])¶
Определяет, представляет ли stat_result временные метки в виде чисел с плавающей запятой. Если newvalue равен True, последующие вызовы stat() возвращают числа с плавающей запятой; если False – целые числа. Если newvalue опущен, возвращается текущая настройка.
Для совместимости со старыми версиями Python доступ к stat_result в виде кортежа всегда возвращает целые числа.
Python теперь по умолчанию возвращает значения float. Приложения, которые некорректно работают с вещественными временными метками, могут использовать эту функцию для восстановления старого поведения.
Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только секундное разрешение; на таких системах дробная часть всегда будет равна нулю.
Рекомендуется изменять этот параметр только во время запуска программы в модуле __main__; библиотеки никогда не должны изменять этот параметр. Если приложение использует библиотеку, которая некорректно работает при обработке вещественных временных меток, этому приложению следует отключить эту возможность до тех пор, пока библиотека не будет исправлена.
- os.statvfs(path)¶
- Выполняет системный вызов statvfs для указанного пути. Возвращаемое значение – объект, атрибуты которого описывают файловую систему по указанному пути и соответствуют полям структуры statvfs, а именно: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax. Доступно: Unix.
- os.symlink(src, dst)¶
- Создаёт символическую ссылку, указывающую на src, с именем dst. Доступно: Unix.
- os.unlink(path)¶
- Удаляет файл path. Это та же функция, что и remove(); имя unlink() – это её традиционное название в Unix. Доступно: Unix, Windows.
- os.utime(path, times)¶
Устанавливает время доступа и время изменения файла, указанного в path. Если times равно None, то время доступа и изменения файла устанавливаются в текущее время. (Эффект аналогичен запуску Unix-программы touch для данного пути.) В противном случае times должен быть кортежем из двух чисел вида (atime, mtime), который используется для установки времени доступа и изменения соответственно. Можно ли передать каталог в качестве path, зависит от того, реализует ли операционная система каталоги как файлы (например, в Windows – нет). Обратите внимание, что установленные здесь точные времена могут не вернуться при последующем вызове stat() из-за разрешающей способности, с которой ваша операционная система записывает время доступа и изменения; см. stat().
Доступность: Unix, Windows.
- os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])¶
Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге top (включая сам top) он возвращает кортеж из трёх элементов (dirpath, dirnames, filenames).
dirpath – строка, путь к каталогу. dirnames – список имён подкаталогов в dirpath (за исключением '.' и '..'). filenames – список имён файлов, не являющихся каталогами, в dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с top) к файлу или каталогу в dirpath, выполните os.path.join(dirpath, name).
Если необязательный аргумент topdown равен True или не указан, тройка для каталога генерируется до троек для любых его подкаталогов (каталоги обходятся сверху вниз). Если topdown равен False, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх).
Когда topdown равен True, вызывающий код может изменить список dirnames на месте (например, с помощью del или срезного присваивания), и walk() будет рекурсивно обходить только те подкаталоги, чьи имена остались в dirnames; это можно использовать для сокращения поиска, задания определённого порядка обхода или даже для информирования walk() о каталогах, которые вызывающий код создаёт или переименовывает до того, как walk() возобновит работу. Изменение dirnames, когда topdown равен False, неэффективно, потому что в режиме обхода снизу вверх каталоги в dirnames генерируются до того, как генерируется сам dirpath.
По умолчанию ошибки вызова listdir() игнорируются. Если указан необязательный аргумент onerror, это должна быть функция; она будет вызвана с одним аргументом – экземпляром OSError. Эта функция может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Имейте в виду, что имя файла доступно как атрибут filename объекта исключения.
По умолчанию walk() не будет спускаться по символическим ссылкам, ведущим к каталогам. Установите followlinks в True, чтобы посещать каталоги, на которые указывают символические ссылки, в системах, поддерживающих их.
Примечание
Имейте в виду, что установка followlinks в значение True может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. walk() не отслеживает уже посещённые каталоги.
Примечание
Если вы передаёте относительное имя пути, не меняйте текущий рабочий каталог между возобновлениями walk(). walk() никогда не меняет текущий каталог и предполагает, что вызывающий код тоже его не меняет.
В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере обход дерева снизу вверх обязателен: rmdir() не позволяет удалить каталог, пока он не пуст:
# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
Управление процессами¶Process Management
Эти функции можно использовать для создания процессов и управления ими.
Различные функции exec*() принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это argv[0], передаваемый в функцию main программы. Например, os.execv('/bin/echo', ['foo', 'bar']) выведет на стандартный вывод только bar; foo будет проигнорирован.
- os.abort()¶
- Генерирует сигнал SIGABRT для текущего процесса. В Unix по умолчанию создаётся дамп памяти; в Windows процесс немедленно возвращает код выхода 3. Имейте в виду, что программы, использующие signal.signal() для регистрации обработчика SIGABRT, будут вести себя иначе. Доступность: Unix, Windows.
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут возбуждаться как исключения OSError.
Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если на этих открытых файлах могут быть буферизованы данные, следует сбросить их с помощью sys.stdout.flush() или os.fsync() перед вызовом функции exec*().
Варианты «l» и «v» функций exec*() различаются способом передачи аргументов командной строки. Варианты «l», вероятно, проще всего использовать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций execl*() . Варианты «v» хороши, когда количество параметров переменное: аргументы передаются в виде списка или кортежа в параметре args . В любом случае аргументы дочернего процесса должны начинаться с имени запускаемой команды, но это не является обязательным.
Варианты, в которых есть буква «p» ближе к концу (execlp(), execlpe(), execvp() и execvpe()), используют переменную окружения PATH для поиска программы file. Когда окружение заменяется (с помощью одного из вариантов exec*e(), обсуждаемых в следующем абзаце), новое окружение используется как источник переменной PATH. Остальные варианты – execl(), execle(), execv() и execve() – не используют переменную PATH для поиска исполняемого файла; path должен содержать подходящий абсолютный или относительный путь.
Для execle(), execlpe(), execve() и execvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции execl(), execlp(), execv() и execvp() заставляют новый процесс наследовать окружение текущего процесса.
Доступность: Unix, Windows.
- os._exit(n)¶
Выход из процесса с кодом n, без вызова обработчиков очистки, сброса буферов stdio и т. д. Доступность: Unix, Windows.
Следующие коды возврата определены и могут использоваться с _exit(), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.
Примечание
Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.
- os.EX_OK¶
- Код выхода, означающий, что ошибок не возникло. Доступность: Unix.
- os.EX_USAGE¶
- Код выхода, означающий, что команда была использована неправильно, например, при неверном количестве аргументов. Доступность: Unix.
- os.EX_DATAERR¶
- Код выхода, означающий, что входные данные были некорректны. Доступность: Unix.
- os.EX_NOINPUT¶
- Код выхода, означающий, что входной файл не существует или не читается. Доступность: Unix.
- os.EX_NOUSER¶
- Код выхода, означающий, что указанный пользователь не существует. Доступность: Unix.
- os.EX_NOHOST¶
- Код выхода, означающий, что указанный хост не существует. Доступность: Unix.
- os.EX_UNAVAILABLE¶
- Код выхода, означающий, что требуемая служба недоступна. Доступность: Unix.
- os.EX_SOFTWARE¶
- Код выхода, означающий, что обнаружена внутренняя программная ошибка. Доступность: Unix.
- os.EX_OSERR¶
- Код выхода, означающий, что обнаружена ошибка операционной системы, например, невозможность создать новый процесс или канал. Доступность: Unix.
- os.EX_OSFILE¶
- Код завершения, означающий, что системный файл не существовал, не удалось открыть или возникла ошибка другого типа. Доступно: Unix.
- os.EX_CANTCREAT¶
- Код завершения, означающий, что указанный пользователем выходной файл не удалось создать. Доступно: Unix.
- os.EX_IOERR¶
- Код завершения, означающий, что произошла ошибка при вводе-выводе какого-либо файла. Доступно: Unix.
- os.EX_TEMPFAIL¶
- Код завершения, означающий временный сбой. Это указывает на ситуацию, которая может не быть настоящей ошибкой, например, сетевое соединение, которое не удалось установить во время операции с повторными попытками. Доступно: Unix.
- os.EX_PROTOCOL¶
- Код завершения, означающий, что обмен по протоколу был недопустимым, некорректным или нераспознанным. Доступно: Unix.
- os.EX_NOPERM¶
- Код завершения, означающий, что недостаточно прав для выполнения операции (но не для проблем файловой системы). Доступно: Unix.
- os.EX_CONFIG¶
- Код завершения, означающий, что произошла какая-то ошибка конфигурации. Доступно: Unix.
- os.EX_NOTFOUND¶
- Код завершения, означающий что-то вроде «запись не найдена». Доступно: Unix.
- os.fork()¶
Создаёт дочерний процесс. Возвращает 0 в дочернем процессе и идентификатор дочернего процесса в родительском. Если происходит ошибка, возбуждается OSError.
Обратите внимание, что некоторые платформы, включая FreeBSD <= 6.3, Cygwin и OS/2 EMX, имеют известные проблемы при использовании fork() из потока.
Доступность: Unix.
- os.forkpty()¶
- Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару (pid, fd), где pid равен 0 в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, а fd – файловый дескриптор главного конца псевдотерминала. Для более переносимого подхода используйте модуль pty. Если происходит ошибка, вызывается OSError. Доступно: некоторые разновидности Unix.
- os.kill(pid, sig)¶
Отправляет сигнал sig процессу pid. Константы для конкретных сигналов, доступных на данной платформе, определены в модуле signal. Доступность: Unix.
- os.killpg(pgid, sig)¶
Отправляет сигнал sig группе процессов pgid. Доступно: Unix.
- os.nice(increment)¶
- Добавляет increment к значению niceness процесса. Возвращает новое значение niceness. Доступно: Unix.
- os.plock(op)¶
- Блокирует сегменты программы в памяти. Значение op (определённое в <sys/lock.h>) определяет, какие сегменты блокируются. Доступно: Unix.
- os.popen(...)
- Запускает дочерние процессы и возвращает открытые каналы для взаимодействия. Эти функции описаны в разделе Создание файловых объектов.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
Выполняет программу path в новом процессе.
(Обратите внимание, что модуль subprocess предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Обратите особое внимание на раздел Replacing Older Functions with the subprocess Module на этой странице документации.)
Если mode равен P_NOWAIT, эта функция возвращает идентификатор нового процесса; если mode равен P_WAIT, возвращает код завершения процесса, если он завершился нормально, или -signal, где signal – это сигнал, который убил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией waitpid().
Варианты «l» и «v» функций spawn*() различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще всего использовать, когда количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными параметрами функций spawnl*(). Варианты «v» удобны, когда количество параметров переменное, а аргументы передаются в виде списка или кортежа в параметре args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.
Варианты, которые содержат вторую букву «p» ближе к концу (spawnlp(), spawnlpe(), spawnvp() и spawnvpe()) используют переменную окружения PATH для поиска программы file. При замене окружения (с помощью одного из вариантов spawn*e(), что обсуждается в следующем абзаце), новое окружение используется как источник переменной PATH. Другие варианты: spawnl(), spawnle(), spawnv() и spawnve() не используют переменную PATH для поиска исполняемого файла; path должен содержать подходящий абсолютный или относительный путь.
Для spawnle(), spawnlpe(), spawnve() и spawnvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции spawnl(), spawnlp(), spawnv() и spawnvp() заставляют новый процесс наследовать окружение текущего процесса.
В качестве примера следующие вызовы spawnlp() и spawnvpe() эквивалентны:
import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Доступность: Unix, Windows. spawnlp(), spawnlpe(), spawnvp() и spawnvpe() недоступны в Windows.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
- Возможные значения параметра mode для семейства функций spawn*(). Если указано одно из этих значений, функции spawn*() вернут управление сразу после создания нового процесса, возвращая идентификатор процесса. Доступность: Unix, Windows.
- os.P_WAIT¶
- Возможное значение параметра mode для семейства функций spawn*(). Если передано mode, функции spawn*() не вернут управление до завершения нового процесса и вернут код завершения процесса, если выполнение успешно, или -signal, если процесс был убит сигналом. Доступность: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
- Возможные значения параметра mode для семейства функций spawn*(). Они менее переносимы, чем перечисленные выше. P_DETACH аналогичен P_NOWAIT, но новый процесс отсоединяется от консоли вызывающего процесса. Если используется P_OVERLAY, текущий процесс будет замещён; функция spawn*() не вернёт управление. Доступность: Windows.
- os.startfile(path[, operation])¶
Запускает файл в связанном с ним приложении.
Если operation не указан или равен 'open', это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде start из интерактивной командной оболочки: файл открывается приложением (если оно есть), связанным с его расширением.
Если указано другое значение operation, оно должно быть «командным глаголом» (command verb), определяющим, что следует сделать с файлом. Распространённые глаголы, документированные Microsoft: 'print' и 'edit' (используются для файлов), а также 'explore' и 'find' (используются для каталогов).
startfile() возвращает управление сразу после запуска связанного приложения. Невозможно дождаться закрытия приложения или получить его код завершения. Параметр path задаётся относительно текущего каталога. Если требуется абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'); в этом случае базовая функция Win32 ShellExecute не работает. Используйте функцию os.path.normpath(), чтобы гарантировать правильную кодировку пути для Win32. Доступность: Windows.
- os.system(command)¶
Выполняет команду (строку) в подпроцессе оболочки. Реализован вызовом стандартной C-функции system и имеет те же ограничения. Изменения os.environ, sys.stdin и т.д. не отражаются в окружении выполненной команды.
В Unix возвращаемое значение – это код завершения процесса, закодированный в формате, указанном для wait(). Обратите внимание, что POSIX не определяет значение возвращаемого значения C-функции system, поэтому возвращаемое значение функции Python зависит от системы.
В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения command, заданное переменной окружения Windows COMSPEC: в системах с command.com (Windows 95, 98 и ME) это всегда 0; в системах с cmd.exe (Windows NT, 2000 и XP) это код завершения выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.
Доступность: Unix, Windows.
Модуль subprocess предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование данной функции. Используйте модуль subprocess. Обратите особое внимание на раздел Replacing Older Functions with the subprocess Module.
- os.times()¶
- Возвращает кортеж из 5 чисел с плавающей запятой, указывающих накопленное (процессорное или иное) время в секундах. Элементы: пользовательское время, системное время, пользовательское время дочерних процессов, системное время дочерних процессов и прошедшее реальное время с фиксированной точки в прошлом – в указанном порядке. См. страницу руководства Unix times(2) или соответствующую документацию Windows Platform API. Доступность: Unix, Windows. В Windows заполнены только первые два элемента, остальные равны нулю.
- os.wait()¶
- Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и код завершения: 16-битное число, младший байт которого – номер сигнала, убившего процесс, а старший байт – код завершения (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан core-файл. Доступность: Unix.
- os.waitpid(pid, options)¶
Подробности этой функции различаются в Unix и Windows.
В Unix: ожидает завершения дочернего процесса с идентификатором pid и возвращает кортеж, содержащий его идентификатор и код завершения (закодирован так же, как для wait()). Семантика вызова зависит от значения целочисленного options, которое должно быть 0 для обычного режима.
Если pid больше 0, waitpid() запрашивает информацию о состоянии для этого конкретного процесса. Если pid равен 0, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если pid равен -1, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше -1, состояние запрашивается для любого процесса в группе процессов -pid (абсолютное значение pid).
Исключение OSError возбуждается со значением errno, когда системный вызов возвращает -1.
В Windows: ожидает завершения процесса, заданного дескриптором процесса pid, и возвращает кортеж, содержащий pid и его код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). pid меньше или равный 0 в Windows не имеет особого значения и вызывает исключение. Значение целочисленного параметра options не влияет на результат. pid может ссылаться на любой процесс с известным идентификатором, не обязательно дочерний. Функции spawn(), вызванные с P_NOWAIT, возвращают подходящие дескрипторы процессов.
- os.wait3([options])¶
- Аналогична waitpid(), за исключением того, что аргумент идентификатора процесса не задаётся, и возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. resource.getrusage(). Аргумент options такой же, как и для waitpid() и wait4(). Доступность: Unix.
- os.wait4(pid, options)¶
- Аналогична waitpid(), за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. resource.getrusage(). Аргументы wait4() те же, что и для waitpid(). Доступность: Unix.
- os.WNOHANG¶
- Опция для waitpid(), позволяющая вернуться немедленно, если статус дочернего процесса недоступен. В этом случае функция возвращает (0, 0). Доступность: Unix.
- os.WCONTINUED¶
- Эта опция предписывает сообщать о дочерних процессах, если они были продолжены после остановки управления заданиями с момента последнего сообщения об их состоянии. Доступность: некоторые системы Unix.
- os.WUNTRACED¶
- Эта опция предписывает сообщать о дочерних процессах, если они были остановлены, но их текущее состояние не было сообщено с момента остановки. Доступность: Unix.
Следующие функции принимают код статуса процесса, возвращаемый system(), wait() или waitpid() в качестве параметра. Они могут использоваться для определения состояния процесса.
- os.WCOREDUMP(status)¶
- Возвращает True, если для процесса был создан дамп памяти, иначе – False. Доступность: Unix.
- os.WIFCONTINUED(status)¶
- Возвращает True, если процесс был продолжен после остановки управления заданиями, иначе – False. Доступность: Unix.
- os.WIFSTOPPED(status)¶
- Возвращает True, если процесс был остановлен, иначе – False. Доступность: Unix.
- os.WIFSIGNALED(status)¶
- Возвращает True, если процесс завершился из-за сигнала, иначе – False. Доступность: Unix.
- os.WIFEXITED(status)¶
- Возвращает True, если процесс завершился с помощью системного вызова exit(2), иначе – False. Доступность: Unix.
- os.WEXITSTATUS(status)¶
- Если WIFEXITED(status) истинно, возвращает целочисленный параметр системного вызова exit(2). В противном случае возвращаемое значение не имеет смысла. Доступность: Unix.
- os.WSTOPSIG(status)¶
- Возвращает сигнал, который вызвал остановку процесса. Доступность: Unix.
- os.WTERMSIG(status)¶
- Возвращает сигнал, который вызвал завершение процесса. Доступность: Unix.
Различная системная информация¶Miscellaneous System Information
- os.confstr(name)¶
Возвращает строковые значения системных конфигураций. name задаёт получаемое значение конфигурации; это может быть строка – имя определённого системного значения; эти имена определены в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы определяют также дополнительные имена. Имена, известные операционной системе, представлены в виде ключей словаря confstr_names. Для переменных конфигурации, отсутствующих в этом словаре, допускается передача целого числа в качестве name. Доступность: Unix.
Если значение конфигурации, указанное name, не определено, возвращается None.
Если name – строка и неизвестна, возбуждается ValueError. Если конкретное значение для name не поддерживается системой, даже если оно включено в confstr_names, возбуждается OSError с errno.EINVAL в качестве кода ошибки.
- os.confstr_names¶
- Словарь, сопоставляющий имена, принимаемые confstr(), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе. Доступность: Unix.
- os.getloadavg()¶
- Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или вызывает OSError, если среднюю нагрузку получить не удалось. Доступность: Unix.
- os.sysconf(name)¶
- Возвращает целочисленные значения системных конфигураций. Если значение конфигурации, заданное name, не определено, возвращается -1. Комментарии относительно параметра name для confstr() применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся sysconf_names. Доступность: Unix.
- os.sysconf_names¶
- Словарь, сопоставляющий имена, принимаемые sysconf(), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе. Доступность: Unix.
Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.
Операции более высокого уровня над путями определены в модуле os.path.
- os.curdir¶
- Строковая константа, используемая операционной системой для обозначения текущего каталога. Это '.' для Windows и POSIX. Также доступна через os.path.
- os.pardir¶
- Строковая константа, используемая операционной системой для обозначения родительского каталога. Это '..' для Windows и POSIX. Также доступна через os.path.
- os.sep¶
- Символ, используемый операционной системой для разделения компонентов пути. Это '/' для POSIX и '\\' для Windows. Обратите внимание, что знания этого недостаточно для разбора или объединения путей – используйте os.path.split() и os.path.join(), однако это бывает полезно. Также доступен через os.path.
- os.altsep¶
- Альтернативный символ, используемый операционной системой для разделения компонентов пути, или None, если существует только один разделитель. Устанавливается в '/' в Windows, где sep является обратной косой чертой. Также доступен через os.path.
- os.extsep¶
- Символ, отделяющий основное имя файла от расширения; например, '.' в os.py. Также доступен через os.path.
- os.pathsep¶
- Символ, обычно используемый операционной системой для разделения компонентов пути поиска (например, в PATH), такой как ':' для POSIX или ';' для Windows. Также доступен через os.path.
- os.defpath¶
- Путь поиска по умолчанию, используемый exec*p*() и spawn*p*(), если в окружении отсутствует ключ 'PATH'. Также доступен через os.path.
- os.linesep¶
- Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например '\\n' для POSIX, или несколько символов, например '\\r\\n' для Windows. Не используйте os.linesep в качестве завершителя строк при записи в файлы, открытые в текстовом режиме (режим по умолчанию); вместо этого используйте одиночный '\\n' на всех платформах.
Разные функции¶Miscellaneous Functions
- os.urandom(n)¶
Возвращает строку из n случайных байтов, пригодных для криптографического использования.
Эта функция возвращает случайные байты из источника случайности, зависящего от ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В UNIX-подобных системах она обращается к /dev/urandom, а в Windows использует CryptGenRandom. Если источник случайности не найден, будет возбуждено исключение NotImplementedError.