posix
— Наиболее распространенные системные вызовы POSIX¶
Модуль предоставляет доступ к функциональности операционной системы, стандартизированной стандартом C и стандартом POSIX (тонко замаскированный интерфейс Unix).
Не импортируйте этот модуль напрямую. Вместо этого импортируйте модуль os
, который предоставляет
портабельную версию этого интерфейса. В Unix модуль os
предоставляет
надмножество интерфейса posix
. В операционных системах, отличных от Unix,
модуль posix
недоступен, но подмножество всегда доступно через интерфейс
os
. Как только os
импортируется, нет снижения
производительности в использовании его вместо posix
. Кроме того,
os
предоставляет некоторые дополнительные функциональные возможности,
такие как автоматический вызов putenv()
при изменении записи в os.environ
.
Ошибки сообщаются как исключения; обычные исключения даны для ошибок типа, в то
время как ошибки, о которых сообщают системные вызовы, поднимают OSError
.
Поддержка больших файлов¶
Несколько операционных систем (включая AIX, HP-UX, Irix и Solaris) обеспечивают
поддержку файлов размером более 2 GiB из C-моделью программирования
int
и long
32-разрядные значения. Обычно это
достигается путем определения соответствующих типов размера и смещения как
64-разрядных значения. Такие файлы иногда называют large files.
Поддержка больших файлов включена в Python, когда размер off_t
больше long
, а long long
меньше off_t
. Для включения
этого режима может потребоваться настроить и скомпилировать Python с
определенными флагами компилятора. Например, она включена по умолчанию для
последних версий Irix, но с Solaris 2.6 и 2.7 нужно делать что-то вроде:
CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
./configure
В системах Linux с поддержкой больших файлов это может сработать:
CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
./configure
Примечательное содержание модуля¶
В дополнение к многим функциям, описанным в документации модуля os
,
posix
определяет следующий элемент данных:
-
posix.
environ
¶ Словарь, представляющий строку среды на момент запуска интерпретатор. Ключи и значения являются байтами в Unix и str в Windows. Например,
environ[b'HOME']
(environ['HOME']
в Windows) - это путь к домашнему каталогу, эквивалентныйgetenv("HOME")
в C.Изменение этого словаря не влияет на среду строка, переданную
execv()
,popen()
илиsystem()
; если необходимо изменить среду, передайтеenviron
execve()
или добавьте назначения переменных и экспортируйте инструкции в команду строка дляsystem()
илиpopen()
.Изменено в версии 3.2: В Unix ключи и значения являются байтами.
Примечание
Модуль
os
обеспечивает альтернативную реализациюenviron
, которая обновляет среду при изменении. Обратите внимание также, что обновлениеos.environ
отдаст этот устаревший словарь. Рекомендуется использовать версию модуляos
для прямого доступа к модулюposix
.