posix — De vanligaste POSIX-systemanropen


Den här modulen ger tillgång till operativsystemets funktioner som standardiseras av C-standarden och POSIX-standarden (ett tunnt förklätt Unix-gränssnitt).

Importera inte den här modulen direkt, utan istället modulen os, som tillhandahåller en portabel version av det här gränssnittet. På Unix ger modulen os en överuppsättning av gränssnittet posix. På operativsystem som inte är Unix är modulen posix inte tillgänglig, men en delmängd är alltid tillgänglig via gränssnittet os. När os väl är importerad finns det ingen prestandaförlust med att använda den istället för posix. Dessutom ger os några ytterligare funktioner, som att automatiskt anropa putenv() när en post i os.environ ändras.

Fel rapporteras som undantag; de vanliga undantagen ges för typfel, medan fel som rapporteras av systemanropen ger upphov till OSError.

Stöd för stora filer

Flera operativsystem (bland annat AIX och Solaris) ger stöd för filer som är större än 2 GiB från en C-programmeringsmodell där int och long är 32-bitarsvärden. Detta åstadkoms vanligen genom att definiera de relevanta storleks- och offset-typerna som 64-bitarsvärden. Sådana filer kallas ibland large files.

Stöd för stora filer aktiveras i Python när storleken på en off_t är större än en long och long long är minst lika stor som en off_t. Det kan vara nödvändigt att konfigurera och kompilera Python med vissa kompilatorflaggor för att aktivera det här läget. Med Solaris 2.6 och 2.7 måste du till exempel göra något i stil med:

CFLAGS="`getconf LFS_CFLAGS`" OPT="-g -O2 $CFLAGS" \
        ./konfigurera

På Linux-system med stor filkapacitet kan detta fungera:

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
        ./konfigurera

Anmärkningsvärt modulinnehåll

Förutom de många funktioner som beskrivs i moduldokumentationen os, definierar posix följande dataelement:

posix.environ

En ordbok som representerar strängmiljön vid den tidpunkt då tolken startades. Nycklar och värden är bytes på Unix och str på Windows. Till exempel är environ[b'HOME'] (environ['HOME'] i Windows) sökvägen till din hemkatalog, motsvarande getenv("HOME") i C.

Om du ändrar den här ordlistan påverkar det inte den strängmiljö som skickas vidare av execv(), popen() eller system(); om du behöver ändra miljön skickar du environ till execve() eller lägger till variabeltilldelningar och exportsatser i kommandosträngen för system() eller popen().

Ändrad i version 3.2: På Unix är nycklar och värden bytes.

Anteckning

Modulen os tillhandahåller en alternativ implementation av environ som uppdaterar miljön vid modifiering. Observera också att uppdatering av os.environ kommer att göra denna ordbok föråldrad. Användning av os-modulens version av denna rekommenderas framför direkt åtkomst till posix-modulen.