Документация Python неофициальный перевод

posix.md

46 строк · 6.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/posix.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 36.1. [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix) – Самые распространенные системные вызовы POSIX89Этот модуль предоставляет доступ к функциям операционной системы, стандартизированным стандартами C и POSIX (по сути, это слегка замаскированный интерфейс Unix).1011**Этот модуль не следует импортировать напрямую.** Вместо этого импортируйте модуль [`os`](https://python-all.ru/2.7/library/os.html#module-os), который предоставляет *переносимую* версию этого интерфейса. В Unix модуль [`os`](https://python-all.ru/2.7/library/os.html#module-os) предоставляет надмножество интерфейса [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix). В операционных системах, отличных от Unix, модуль [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix) недоступен, но подмножество всегда доступно через интерфейс [`os`](https://python-all.ru/2.7/library/os.html#module-os). После импорта [`os`](https://python-all.ru/2.7/library/os.html#module-os) *не* возникает потери производительности при его использовании вместо [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix). Кроме того, [`os`](https://python-all.ru/2.7/library/os.html#module-os) предоставляет некоторые дополнительные возможности, такие как автоматический вызов [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) при изменении записи в `os.environ`.1213Ошибки возвращаются в виде исключений; для ошибок типа используются обычные исключения, а ошибки, возвращаемые системными вызовами, порождают [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).1415## 36.1.1. Поддержка больших файлов1617Некоторые операционные системы (включая AIX, HP-UX, Irix и Solaris) поддерживают файлы размером более 2 ГБ при использовании модели программирования на C, где `int` и `long` являются 32-битными значениями. Обычно это достигается за счёт определения соответствующих типов размера и смещения как 64-битных значений. Такие файлы иногда называют *большими файлами*.1819Поддержка больших файлов включается в Python, когда размер `off_t` превышает `long`, а тип `long long` доступен и имеет размер не меньше, чем `off_t`. В таком случае для представления размеров файлов, смещений и других значений, выходящих за пределы диапазона Python int, используются длинные целые Python. Возможно, потребуется настроить и скомпилировать Python с определёнными флагами компилятора, чтобы включить этот режим. Например, в последних версиях Irix он включён по умолчанию, а в Solaris 2.6 и 2.7 нужно сделать что-то вроде:2021```python22CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \23        ./configure24```2526На Linux-системах с поддержкой больших файлов это может сработать:2728```python29CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \30        ./configure31```3233## 36.1.2. Примечательное содержимое модуля3435В дополнение ко многим функциям, описанным в документации модуля [`os`](https://python-all.ru/2.7/library/os.html#module-os), [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix) определяет следующий элемент данных:3637#### `posix.environ`3839Словарь, представляющий строковое окружение на момент запуска интерпретатора. Например, `environ['HOME']` – это путь к вашему домашнему каталогу, эквивалентный `getenv("HOME")` в C.4041Изменение этого словаря не влияет на строковое окружение, передаваемое через [`execv()`](https://python-all.ru/2.7/library/os.html#os.execv), [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen) или [`system()`](https://python-all.ru/2.7/library/os.html#os.system); если необходимо изменить окружение, передайте `environ` в [`execve()`](https://python-all.ru/2.7/library/os.html#os.execve) или добавьте присваивания переменных и операторы export в командную строку для [`system()`](https://python-all.ru/2.7/library/os.html#os.system) или [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen).4243> **Примечание**44>45> Модуль [`os`](https://python-all.ru/2.7/library/os.html#module-os) предоставляет альтернативную реализацию `environ`, которая обновляет окружение при изменении. Также обратите внимание, что изменение `os.environ` сделает этот словарь устаревшим. Рекомендуется использовать версию из модуля [`os`](https://python-all.ru/2.7/library/os.html#module-os) вместо прямого доступа к модулю [`posix`](https://python-all.ru/2.7/library/posix.html#module-posix).46