posix
--- 最常見(jiàn)的 POSIX 系統調用?
此模塊提供了對基于 C 標準和 POSIX 標準(一種稍加修改的 Unix 接口)進(jìn)行標準化的系統功能的訪(fǎng)問(wèn)。
請勿直接導入此模塊。 而應導入 os
模塊,它提供了此接口的 可移植 版本。 在 Unix 上,os
模塊提供了 posix
接口的一個(gè)超集。 在非 Unix 操作系統上 posix
模塊將不可用,但會(huì )通過(guò) os
接口提供它的一個(gè)可用子集。 一旦導入了 os
,用它替代 posix
時(shí)就 沒(méi)有 性能懲罰。 此外,os
還提供了一些附加功能,例如在 os.environ
中的某個(gè)條目被修改時(shí)會(huì )自動(dòng)調用 putenv()
。
錯誤將作為異常被報告;對于類(lèi)型錯誤會(huì )給出普通異常,而系統調用所報告的異常則會(huì )引發(fā) OSError
。
大文件支持?
某些操作系統(包括 AIX, HP-UX 和 Solaris)可對 int 和 long 為 32 位值的 C 編程模型提供大于 2 GiB 文件的支持。 這在通常情況下是以將相關(guān)數據長(cháng)度和偏移類(lèi)型定義為 64 值的方式來(lái)實(shí)現的。 這樣的文件有時(shí)被稱(chēng)為 大文件。
Python 中的大文件支持會(huì )在 off_t
的大小超過(guò) long 且 long long 的大小至少與 off_t
一樣時(shí)被啟用。 要啟用此模式可能必須在啟用特定編譯旗標的情況下來(lái)配置和編譯 Python。 例如,在 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
模塊文檔已說(shuō)明的許多函數,posix
還定義了下列數據項:
- posix.environ?
一個(gè)表示解釋器啟動(dòng)時(shí)間點(diǎn)的字符串環(huán)境的字典。 鍵和值的類(lèi)型在Unix 上為 bytes 而在 Windows 上為 str。 例如,
environ[b'HOME']
(Windows 上的environ['HOME']
) 是你的家目錄的路徑名,等價(jià)于 C 中的getenv("HOME")
。修改此字典不會(huì )影響由
execv()
,popen()
或system()
所傳入的字符串環(huán)境;如果你需要修改環(huán)境,請將environ
傳給execve()
或者為system()
或popen()
的命令字符串添加變量賦值和 export 語(yǔ)句。在 3.2 版更改: 在 Unix 上,鍵和值為 bytes 類(lèi)型。
備注
os
模塊提供了對environ
的替代實(shí)現,它會(huì )在被修改時(shí)更新環(huán)境。 還要注意更新os.environ
將導致此字典失效。 推薦使用這個(gè)os
模塊版本而不是直接訪(fǎng)問(wèn)posix
模塊。