Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[ Россум, Дрейк, Откидач ] Язык программирования Python

.pdf
Скачиваний:
295
Добавлен:
25.04.2014
Размер:
1.5 Mб
Скачать

21.1. os — основные службы операционной системы

271

dup(fd)

(UNIX, Windows, Macintosh)

Возвращает дубликат файлового дескриптора fd.

 

dup2(fd1, fd2)

(UNIX, Windows)

Копирует файловый дескриптор fd1 в fd2, предварительно закрыв последний,

если это необходимо.

 

fpathconf(fd, name)

(UNIX)

Возвращает системную информацию, относящуюся

к открытому файлу. Аргу-

мент name должен быть строкой с именем системного значения или целым числом. Известные для данной ОС имена системных значений даны в словаре pathconf_names. Если имя name не известно, генерируется исключение ValueError. Если имя не поддерживается ОС (даже если оно включено в pathconf_names), генерируется исключение OSError с errno.EINVAL в качестве номера ошибки.

fstat(fd)

(UNIX, Windows)

Возвращает информацию о файловом дескрипторе fd в виде, аналогичном тому, в

котором возвращает результат функция stat().

 

fstatvfs(fd)

(UNIX)

Возвращает информацию о файловой системе, на которой находится файл, ассоциированный с файловым дескриптором fd, в виде, аналогичном тому, в котором возвращает результат функция statvfs().

ftruncate(fd, length)

(UNIX)

Укорачивает файл, соответствующий дескриптору fd, так, чтобы его длина была

не более length байт.

 

isatty(fd)

(UNIX)

Возвращает 1, если дескриптор файла fd открыт и связан с tty-подобным устрой-

ством, иначе возвращает 0.

 

lseek(fd, offset, whence)

(UNIX, Windows, Macintosh)

Устанавливает текущую позицию в файле, соответствующего дескриптору fd. Ар-

гумент whence указывает точку отсчета: 0 — начало файла, 1 — текущая позиция

и 2 — конец файла.

 

open(filename, flags [, mode])

(UNIX, Windows, Macintosh)

Открывает файл с именем filename, устанавливает для него различные флаги в соответствии с аргументом flags и права на доступ в соответствии с аргументом mode (по умолчанию 0777) и текущим значением маски (umask). Возвращает дескриптор открытого файла. В качестве флагов могут быть использованы константы, описанные в конце раздела, объединенные оператором ‘|’.

openpty()

(некоторые варианты UNIX)

Открывает новую

пару псевдотерминалов и возвращает пару дескрипторов

(master, slave)’ для pty и tty соответственно.

272

Глава 21.

Доступ к средствам, предоставляемым операционной . . .

pipe()

(UNIX, Windows)

 

Создает канал и возвращает пару дескрипторов ‘(r, w)’, которые могут исполь-

 

зоваться для чтения и записи соответственно.

read(fd, n)

(UNIX, Windows, Macintosh)

 

Считывает не более n байт из файла, ассоциированного с дескриптором fd. Воз-

 

вращает строку из считанных байтов.

tcgetpgrp(fd)

(UNIX)

 

Возвращает идентификатор группы процессов, ассоциированной с терминалом, де-

 

скриптор которого использован в качестве аргумента fd.

tcsetpgrp(fd, pg)

(UNIX)

 

Устанавливает идентификатор группы процессов, ассоциированной с терминалом,

 

дескриптор которого использован в качестве аргумента fd, равным pg.

ttyname(fd)

(UNIX)

 

Возвращает имя терминала, ассоциированного с дескриптором fd. Если fd не

 

является дескриптором устройства tty, генерируется исключение.

write(fd, str)

(UNIX, Windows, Macintosh)

Записывает строку str в файл, ассоциированный с дескриптором fd. Возвращает количество реально записанных байтов.

В качестве аргумента flags функции open() могут использоваться следующие

константы, объединенные оператором ‘|’:

 

O_RDONLY

(UNIX, Windows, Macintosh)

O_WRONLY

(UNIX, Windows, Macintosh)

O_RDWR

(UNIX, Windows, Macintosh)

Определяют доступ к файлу: только для чтения, только для записи или для чтения

и записи.

 

O_APPEND

(UNIX, Windows, Macintosh)

Дописывать данные в конец файла.

 

O_CREAT

(UNIX, Windows, Macintosh)

Создать файл, если он не существует.

 

O_EXCL

(UNIX, Windows, Macintosh)

Открывать файл только, если он не существует.

 

O_TRUNC

(UNIX, Windows, Macintosh)

Если файл существует, его содержимое будет удалено.

O_NDELAY

(UNIX)

O_NONBLOCK

(UNIX)

Открыть файл без блокировки.

 

O_DSYNC

(UNIX)

O_RSYNC

(UNIX)

O_SYNC

(UNIX)

Открыть файл для синхронного ввода/вывода.

 

21.1. os — основные службы операционной системы

273

O_NOCTTY

(UNIX)

Если файл является устройством tty, он не станет терминалом, контролирующим

текущий процесс.

 

O_BINARY

(Windows, Macintosh)

O_TEXT

(Windows, Macintosh)

Открыть файл в двоичном или текстовом режиме.

 

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

access(path, mode) (UNIX, Windows) Проверяет доступ текущего процесса к файлу (каталогу) path на чтение, запись и/или выполнение. Аргумент mode должен быть равен F_OK для проверки существования файла или одна или несколько (объединенных оператором ‘|’) констант из R_OK, W_OK и X_OK для проверки доступа. Возвращает 1, если доступ разрешен, иначе возвращает 0.

F_OK

Используется в качестве аргумента mode функции access() для проверки наличия файла.

R_OK

Используется в качестве аргумента mode функции access() для проверки доступа к файлу на чтение.

W_OK

Используется в качестве аргумента mode функции access() для проверки доступа к файлу на запись.

X_OK

Используется в качестве аргумента mode функции access() для проверки доступа к файлу на выполнение.

chdir(path)

(UNIX, Windows, Macintosh)

Изменяет текущий рабочий каталог на path.

 

getcwd()

(UNIX, Windows, Macintosh)

Возвращает строку, представляющую текущий рабочий каталог.

chmod(path, mode)

(UNIX, Windows)

Изменяет режим доступа к файлу (каталогу) на mode (целое число).

chown(path, uid, gid)

(UNIX)

Изменяет идентификаторы пользователя и группы пользователей файла (каталога)

path на uid и gid соответственно.

 

link(src, dst)

(UNIX)

Создает жесткую ссылку с именем dst, указывающую на src.

274

Глава 21.

Доступ к средствам, предоставляемым операционной . . .

listdir(path)

(UNIX, Windows, Macintosh)

 

Возвращает список имен файлов и каталогов в каталоге path (используются пути

 

относительно каталога path). Список не включает специальные имена (curdir и

 

pardir), даже если они присутствуют.

lstat(path)

(UNIX)

 

Работает аналогично функции stat(), но не следует символическим ссылкам.

mkfifo(path [, mode])

(UNIX)

 

Создает канал (FIFO) с именем path и режимом доступа mode (целое число, по

 

умолчанию равен 0666) с учетом текущего значения маски доступа (umask).

 

С именованными каналами работают как с обычными файлами. Созданный канал

 

существует до тех пор, пока он не будет удален, например, с помощью функции

 

unlink(). Обычно сервер открывает именованный канал для чтения и клиент —

 

для записи.

 

mkdir(path [, mode])

(UNIX, Windows, Macintosh)

Создает каталог с именем path и режимом доступа mode (целое число, по умолчанию используется 0777) с учетом маски доступа (umask).

makedirs(path [, mode])

Функция для рекурсивного создания каталогов. Работает аналогично функции mkdir(), но автоматически создает все необходимые промежуточные каталоги. Генерирует исключение IOError, если каталог path уже присутствует или не может быть создан.

pathconf(path, name)

(UNIX)

Возвращает системную информацию,

относящуюся к файлу с именем path.

Аргумент name должен быть строкой с именем системного значения или целым числом. Известные для данной ОС имена системных значений даны в словаре pathconf_names. Если имя name неизвестно, генерируется исключение ValueError. Если имя не поддерживается ОС (даже если оно включено в pathconf_names), генерируется исключение OSError с errno.EINVAL в качестве номера ошибки.

pathconf_names

(UNIX)

Словарь, отображающий имена, воспринимаемые функциями pathconf() и

fpathconf(), к целым значениям для этих имен.

 

readlink(path)

(UNIX)

Возвращает строку с именем файла (каталога), на который указывает символиче-

ская ссылка path.

 

remove(path)

(UNIX, Windows, Macintosh)

unlink(path)

(UNIX, Windows, Macintosh)

Удаляют файл с именем path. Для удаления каталогов воспользуйтесь функцией rmdir().

removedirs(path)

Функция для рекурсивного удаления каталогов. Работает аналогично функции

21.1. os — основные службы операционной системы

275

rmdir(), но также рекурсивно удаляет и пустые родительские каталоги (если это возможно). Генерирует исключение IOError, если каталог path не может быть удален.

rename(src, dst)

(UNIX, Windows, Macintosh)

Переименовывает файл (каталог) src в dst.

 

renames(old, new)

Функция для рекурсивного переименования. Работает аналогично функции rename(), но сначала пытается создать родительские каталоги, необходимые для создания new. После переименования old в new удаляет правую часть пути old с помощью функции removedirs().

rmdir(path)

(UNIX, Windows, Macintosh)

Удаляет каталог с именем path.

 

stat(path)

(UNIX, Windows, Macintosh)

Возвращает информацию о файле (каталоге) path в виде кортежа, содержащего как минимум 10 наиболее важных (и переносимых) целочисленных элементов в следующем порядке: st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. В стандартном модуле stat определены функции и константы, которые будут полезны для обработки результата.

Под ОС Windows некоторые элементы будут иметь произвольные значения.

statvfs(path) (UNIX) Возвращает информацию о файловой системе, на которую ссылается путь path, в виде кортежа из 10 наиболее общих целочисленных элементов в следующем порядке: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax. В стандартном модуле statvfs определены функции и константы, которые будут полезны для обработки результата.

symlink(src, dst)

(UNIX)

Создает символическую ссылку с именем dst, указывающую на src.

 

tempnam([dir [, prefix]])

(UNIX)

Возвращает уникальное имя, подходящее для создания временного файла в каталоге dir. Если аргумент dir опущен или равен None, используется общепринятое место для временных файлов. Если задан и не равен None аргумент prefix (строка), он используется в качестве приставки к имени временного файла. Функция доступна, начиная с версии 1.6.

tmpnam() (UNIX) Возвращает уникальное имя, подходящее для создания временного файла. Используется общепринятое место для временных файлов. Функция доступна, начиная с версии 1.6.

TMP_MAX

Максимальное количество уникальных имен, которые может сгенерировать функция tmpnam() перед тем, как использовать их снова. Эта константа доступна, начиная с версии 1.6.

276

Глава 21.

Доступ к средствам, предоставляемым операционной . . .

utime(path, times)

(UNIX, Windows, Macintosh)

Устанавливает время последнего доступа и последнего внесения изменений файла path. Начиная с версии 2.0, в качестве аргумента times Вы можете использовать None для того, чтобы установить текущее время. Иначе times должен быть кортежем вида ‘(atime, mtime)’, где atime — время последнего доступа и mtime — время последнего внесения изменений.

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

Функции, описанные в этом разделе, предназначены для создания и управления процессами.

Функциям с именами вида exec*() передается список аргументов запускаемой программы. Во всех случаях первый из них передается как собственное имя программы, а не как аргумент командной строки, то есть sys.argv[0], если Вы запускаете программу на языке Python. Например, ‘os.execv(’/bin/echo’, [’foo’, ’bar’])

выведет слово “bar” на стандартный поток вывода, в то время как строка ’foo’ просто игнорируется.

abort()

(UNIX, Windows)

Посылает сигнал SIGABRT текущему процессу. По умолчанию в UNIX сиг-

нал SIGABRT приводит к прерыванию процесса

и сохранению дампа памяти

(‘core’), под Windows процесс прерывается с кодом завершения, равным 3. Программа может зарегистрировать другой обработчик сигнала с помощью функции signal.signal().

execl(path [, arg1 ...])

(UNIX, Windows)

Эквивалентно вызову ‘execv(path, (arg1, ...))’.

 

execle(path

[, arg1

...], env)

(UNIX, Windows)

Эквивалентно вызову ‘execve(path, (arg1, ...), env)’.

 

execlp(path

[, arg1

...])

(UNIX, Windows)

Эквивалентно вызову ‘execvp(path, (arg1, ...))’.

execv(path, args)

(UNIX, Windows)

Выполняет файл path со списком аргументов args (кортеж или список), заменяя

текущий процесс (то есть интерпретатор).

 

execve(path, args, env)

(UNIX, Windows)

Выполняет файл path со списком аргументов args (кортеж или список) и окруже-

нием env (словарь, отображающий имена переменных окружения к их значениям),

заменяя текущий процесс (то есть интерпретатор).

 

execvp(path, args)

(UNIX, Windows)

Ищет в путях (environ[’PATH’]) файл path и выполняет его аналогично функции execv().

21.1. os — основные службы операционной системы

277

execvpe(path, args, env)

(UNIX, Windows)

Ищет в путях (env[’PATH’]) файл path и выполняет его аналогично функции

execve().

 

_exit(code)

(UNIX, Windows)

Прерывает выполнение программы с кодом завершения code без выполнения каких-либо дополнительных действий. Нормальным способом прерывания выполнения программы является вызов sys.exit(n). Функцию _exit() следует использовать только в дочернем процессе после вызова fork().

fork()

(UNIX)

Создает ответвление от текущего процесса. Возвращает 0 в дочернем процессе и

идентификатор дочернего процесса в родительском.

 

forkpty()

(некоторые варианты UNIX)

Создает ответвление от текущего процесса, используя новый псевдотерминал в качестве терминала, контролирующего дочерний процесс. Возвращает пару ‘(pid, fd)’, где pid равен 0 в дочернем процессе и идентификатору дочернего процесса в родительском и fd является файловым дескриптором псевдотерминала. Для большей переносимости используйте модуль pty.

kill(pid, sig)

(UNIX)

Посылает сигнал sig процессу с идентификатором pid. Смотрите также описание

модуля signal.

 

nice(increment)

(UNIX)

Добавляет значение increment к текущему приоритету процесса, возвращает но-

вый приоритет.

 

plock(op)

(UNIX)

Блокирует в памяти сегменты программы. Эта функция доступна, начиная с версии

2.0.

 

spawnv(mode, path, args)

(UNIX, Windows)

Выполняет отдельным процессом файл path с аргументами args (кортеж или

список). Аргумент mode может иметь значения, описанные ниже. На платформах

UNIX эта функция доступна, начиная с версии 1.6.

 

spawnve(mode, path, args, env)

(UNIX, Windows)

Выполняет отдельным процессом файл path с аргументами args (кортеж или список) и используя env в качестве окружения. Аргумент mode может иметь значения, описанные ниже. На платформах UNIX эта функция доступна, начиная с версии 1.6.

P_WAIT

(UNIX, Windows)

P_NOWAIT

(UNIX, Windows)

P_NOWAITO

(UNIX, Windows)

P_OVERLAY

(Windows)

P_DETACH

(Windows)

Возможные значения аргумента mode функций spawnv() и spawnve().

278

Глава 21.

Доступ к средствам, предоставляемым операционной . . .

startfile(path)

(Windows)

 

Открывает файл, используя ассоциированную с расширением (или типом) path

 

программу, аналогично команде start стандартного командного интерпретатора

 

Windows (или двойному щелчку мыши в Explorer). Функция заканчивает свое вы-

 

полнение сразу же после запуска. Не существует способа дождаться завершения

 

выполнения программы или определения ее кода завершения. Используйте функ-

 

цию os.path.normpath() для приведения пути к правильному виду. Функция

 

startfile() доступна, начиная с версии 2.0.

system(command)

(UNIX, Windows)

 

Выполняет в стандартном для данной платформы командном интерпретаторе ко-

 

манду command (строка). Возвращает код завершения в формате, аналогичном

 

формату результата функции wait(), за исключением Windows 95 и 98 — в этих

 

ОС всегда возвращает 0.

 

times()

(UNIX, Windows)

 

Возвращает кортеж из вещественных чисел, указывающих суммарное затраченное

 

время пользователем, системой, пользователем в дочерних процессах, системой в

 

дочерних процессах и реальное время работы с определенного момента в прошлом.

wait()

(UNIX)

 

Ждет завершения дочернего процесса и возвращает кортеж вида ‘(pid, code)’,

 

где pid — идентификатор дочернего процесса и code — код, младший байт кото-

 

рого содержит номер сигнала, завершившего выполнение процесса (старший бит

 

установлен, если был записан дамп памяти), а старший байт — код завершения

 

(если номер сигнала равен 0).

waitpid(pid, options)

(UNIX)

Ждет завершения дочернего процесса, заданного аргументом pid, и возвращает кортеж вида ‘(pid, code)’ (см. описание функции wait()). Точная семантика функции зависит от значения аргумента options, который должен быть равен 0 для обычных операций.

Если аргумент pid больше 0, waitpid() запрашивает информацию для процесса с идентификатором pid. Если аргумент pid равен 0, запрашивается информация для любого дочернего процесса из той же группы, что и текущий процесс. Если аргумент pid равен -1, запрашивается информация для любого дочернего процесса. Если аргумент pid меньше -1, запрашивается информация для любого процесса в группе с идентификатором -pid (абсолютное значение аргумента pid).

WNOHANG (UNIX) При использовании этой опция функция waitpid() не ожидает завершения процесса, а возвращает информацию только, если она сразу доступна.

Следующие функции позволяют извлечь информацию из закодированного кода завершения, возвращаемого функциями system(), wait() и waitpid():

WIFSTOPPED(code)

(UNIX)

Возвращает истину, если процесс был остановлен.

 

21.1. os — основные службы операционной системы

279

WIFSIGNALED(code)

(UNIX)

Возвращает истину, если процесс был завершен сигналом.

 

WIFEXITED(code)

(UNIX)

Возвращает истину, если процесс был завершен системным вызовом функции

exit().

 

WEXITSTATUS(code)

(UNIX)

Если выражение WIFEXITED(code) верно, возвращает целочисленный параметр,

использованный при системном вызове функции exit(), в противном случае воз-

вращаемое значение не несет какого-либо смысла.

 

WSTOPSIG(code)

(UNIX)

Возвращает номер сигнала, который привел к остановке процесса.

 

WTERMSIG(code)

(UNIX)

Возвращает номер сигнала, который привел к завершению процесса.

 

21.1.6 Различная системная информация

confstr(name) (UNIX) Возвращает строку, содержащую системную конфигурационную информацию. Аргумент name должен быть строкой с именем системного значения или целым числом. Известные для данной ОС имена системных значений даны в словаре confstr_names. Если системное значение name не задано, возвращает пустую строку. Если имя name неизвестно, генерируется исключение ValueError. Если имя не поддерживается ОС (даже если оно включено в confstr_names), генерируется исключение OSError с errno.EINVAL в качестве номера ошибки.

confstr_names

(UNIX)

Словарь, отображающий имена, воспринимаемые функцией confstr(), к целым

значениям для этих имен.

 

sysconf(name)

(UNIX)

Возвращает целое системное конфигурационное значение. Аргумент name должен быть строкой с именем системного значения или целым числом. Известные для данной ОС имена системных значений даны в словаре sysconf_names. Если системное значение name не задано, возвращает -1. Если имя name неизвестно, генерируется исключение ValueError. Если имя не поддерживается ОС (даже если оно включено в sysconf_names), генерируется исключение OSError с errno.EINVAL в качестве номера ошибки.

sysconf_names (UNIX)

Словарь, отображающий имена, воспринимаемые функцией sysconf(), к целым значениям для этих имен.

Следующие константы используются при работе с именами путей. Операции высокого уровня над именами путей определены в модуле os.path.

280

Глава 21. Доступ к средствам, предоставляемым операционной . . .

curdir

Строка, используемая для ссылки на текущий каталог, например ’.’ или ’:’.

pardir

Строка, используемая для ссылки на родительский каталог, например ’..’ или

’::’.

sep

Символ, который используется ОС для разделения компонент пути, например, ’/’,

’\’ или ’:’.

altsep

Альтернативный символ, используемый ОС для разделения компонент пути, или None, если имеется только один символ. В DOS и Windows эта константа имеет значение ’/’.

pathsep

Символ, который обычно используется ОС для разделения имен путей в списке (как в переменной окружения PATH), например, ’:’ или ’;’.

defpath

Путь поиска исполняемых файлов по умолчанию, если не установлена переменная окружения PATH.

linesep

Последовательность символов, которая используется для завершения строк на данной платформе, например, ’\n’, ’\r’ или ’\r\n’.

21.2os.path — работа с именами путей

Этот модуль определяет полезные операции над именами путей.

abspath(path)

Возвращает нормализованную абсолютную версию пути path. На большинстве платформ вызов этой функции эквивалентен вызову ‘normpath(join(os.getcwd(), path))’.

basename(path)

Возвращает основное имя (basename) пути path. Это второй элемент пары split(path). Обратите внимание, что поведение этой функции отличается от поведения программы basename, которая для ’/foo/bar/’ выводит ’bar’, в то время как функция basename() возвращает пустую строку.

commonprefix(list)

Возвращает наибольшую общую часть путей в списке list (произвольная последовательность), полученную посимвольным сравнением (то есть результат может и не быть корректным путем). Если список list пуст, возвращает пустую строку (’’).