os — grundläggande ”operativsystemstjänster”

Modulen os innehåller funktioner för filsystemsåtkomst och montering, terminalomdirigering och -duplicering, samt funktionerna uname och urandom.

Allmänna funktioner

os.uname() Tuple[str, str, str, str, str]

Returnerar en tupel (möjligen en namngiven tupel) som innehåller information om den underliggande maskinen och/eller dess operativsystem. Tupeln har fem fält i följande ordning, vart och ett en sträng:

  • sysname – Namnet på det underliggande systemet

  • nodename – Nätverksnamnet (kan vara samma som sysname)

  • release – Versionen av det underliggande systemet

  • version – MicroPython-versionen och byggdatumet

  • machine – En identifierare för den underliggande hårdvaran (t.ex. kort, CPU)

os.urandom(n: int) bytes

Returnerar ett bytes-objekt med n slumpmässiga byte. Källan är kryptografiskt lämplig på alla kameror som stöds, även om implementationen varierar mellan portar:

  • STM32-kameror (M4, M7, H7, H7+, PT, N6) använder STM32:s hårdvaru-RNG-kringutrustning.

  • i.MX RT1062-kameror (RT1060) använder chippets hårdvaru-TRNG.

  • Alif Ensemble-kameror (AE3) använder Secure Enclaves hårdvarutjänst för slumptal.

  • Arduino Nano 33 BLE Sense använder nRF52:s hårdvaru-RNG-kringutrustning.

  • Arduino Nano RP2040 Connect har ingen hårdvaru-TRNG; pico-sdk:s PRNG seedas och blandas kontinuerligt om med RP2040:s inbyggda entropikällor.

Filsystemsåtkomst

os.chdir(path: str) None

Byter aktuell katalog.

os.getcwd() str

Hämtar den aktuella katalogen.

os.ilistdir(dir: str | None = None) Iterator[Tuple]

Denna funktion returnerar en iterator som sedan ger tupler motsvarande posterna i den katalog som listas. Utan argument listas den aktuella katalogen, annars listas katalogen som anges av dir.

Tuplerna har formen (name, type, inode[, size]):

  • name är en sträng (eller bytes om dir är ett bytes-objekt) och är postens namn;

  • type är ett heltal som anger postens typ, med 0x4000 för kataloger och 0x8000 för vanliga filer;

  • inode är ett heltal som motsvarar filens inod och kan vara 0 för filsystem som inte har ett sådant begrepp.

  • size är ett heltal som kan inkluderas beroende på filsystemstypen. För filposter representerar size filens storlek eller -1 om okänd. Dess betydelse är för närvarande odefinierad för katalogposter.

os.listdir(dir: str | None = None) List[str]

Utan argument listas den aktuella katalogen. Annars listas den angivna katalogen.

os.mkdir(path: str) None

Skapar en ny katalog.

os.remove(path: str) None

Tar bort en fil.

Tar bort en fil. Detta är ett alias för remove().

os.rmdir(path: str) None

Tar bort en katalog.

os.rename(old_path: str, new_path: str) None

Byter namn på en fil.

os.stat(path: str) Tuple

Hämtar statusen för en fil eller katalog.

os.statvfs(path: str) Tuple

Hämtar statusen för ett filsystem.

Returnerar en tupel med filsystemsinformationen i följande ordning:

  • f_bsize – Filsystemets blockstorlek

  • f_frsize – Fragmentstorlek

  • f_blocks – Filsystemets storlek i f_frsize-enheter

  • f_bfree – Antal lediga block

  • f_bavail – Antal lediga block för icke-privilegierade användare

  • f_files – Antal inoder

  • f_ffree – Antal lediga inoder

  • f_favail – Antal lediga inoder för icke-privilegierade användare

  • f_flag – Monteringsflaggor

  • f_namemax – Maximal filnamnslängd

Parametrar relaterade till inoder: f_files, f_ffree, f_favail och parametern f_flag kan returnera 0 eftersom de kan vara otillgängliga i en portspecifik implementation.

os.sync() None

Synkroniserar alla filsystem.

os.sep: str

Sökvägskomponentens avgränsare som används av filsystemet, strängen '/'.

Terminalomdirigering och -duplicering

os.dupterm(stream_object: Any, index: int = 0, /) Any

Duplicerar eller växlar MicroPython-terminalen (REPL) på det angivna stream-liknande objektet. Argumentet stream_object måste vara ett inbyggt strömobjekt, eller härledas från io.IOBase och implementera metoderna readinto() och write(). Strömmen bör vara i icke-blockerande läge och readinto() bör returnera None om det inte finns någon data tillgänglig att läsa.

Efter att denna funktion anropats upprepas all terminalutmatning på denna ström, och all inmatning som är tillgänglig på strömmen skickas vidare till terminalinmatningen.

Parametern index bör vara ett icke-negativt heltal och anger vilken dupliceringsplats som ställs in. En given port kan implementera fler än en plats (plats 0 är alltid tillgänglig) och i så fall dupliceras terminalin- och utmatning på alla platser som är inställda.

Om None skickas som stream_object avbryts dupliceringen på platsen som anges av index.

Funktionen returnerar det tidigare strömliknande objektet i den angivna platsen.

os.dupterm_notify(obj_in: Any, /) None

Meddelar MicroPython-REPL att inmatning är tillgänglig på ett strömliknande objekt som tidigare registrerats via os.dupterm().

Denna funktion bör anropas av anpassade strömimplementationer (t.ex. UART, Bluetooth eller andra REPL-strömmar som inte är USB) för att informera REPL om att inmatning är redo att läsas. Korrekt användning säkerställer att specialtecken som Ctrl+C (som används för att utlösa KeyboardInterrupt) bearbetas omgående av REPL, vilket möjliggör förväntat avbrottsbeteende för användarkod.

Parametern obj_in ignoreras av os.dupterm_notify(), men krävs för att tillåta anrop av dupterm_notify från en avbrottshanterare som UART.irq().

Exempel:

from machine import UART
import os
uart = UART(0)
os.dupterm(uart, 0)
uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)

Anteckning

Om funktionen dupterm_notify() inte anropas kanske inmatning från den anpassade strömmen inte upptäcks eller bearbetas förrän nästa REPL-pollning, vilket potentiellt fördröjer KeyboardInterrupts eller andra styrsignaler. Detta är särskilt viktigt för UART, Bluetooth och andra icke-standardiserade REPL-anslutningar, där automatisk avisering inte är garanterad.

Filsystemsmontering

Följande funktioner och klasser har flyttats till modulen vfs. De tillhandahålls i denna modul endast för bakåtkompatibilitet och kommer att tas bort i version 2 av MicroPython.

os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None

Monterar filsystemsobjektet fsobj på platsen i VFS som anges av strängen mount_point. fsobj kan vara ett VFS-objekt som har en mount()-metod, eller en blockenhet. Om det är en blockenhet detekteras filsystemstypen automatiskt (ett undantag kastas om inget filsystem kändes igen). mount_point kan vara '/' för att montera fsobj i roten, eller '/<name>' för att montera det i en underkatalog under roten.

Om readonly är True monteras filsystemet skrivskyddat.

Under monteringsprocessen anropas metoden mount() på filsystemsobjektet.

Kastar OSError(EPERM) om mount_point redan är monterat.

os.mount() List[Tuple[Any, str]]

Utan argument till mount() returneras en lista med tupler som representerar alla aktiva monteringspunkter.

Den returnerade listan har formen [(fsobj, mount_point), …].

os.umount(mount_point: str | Any) None

Avmonterar ett filsystem. mount_point kan vara en sträng som namnger monteringsplatsen, eller ett tidigare monterat filsystemsobjekt. Under avmonteringsprocessen anropas metoden umount() på filsystemsobjektet.

Kastar OSError(EINVAL) om mount_point inte hittas.

class os.VfsFat(block_dev: AbstractBlockDev)

Skapar ett filsystemsobjekt som använder filsystemsformatet FAT. Lagringen av FAT-filsystemet tillhandahålls av block_dev. Objekt som skapas av denna konstruktor kan monteras med mount().

static mkfs(block_dev: AbstractBlockDev) None

Bygger ett FAT-filsystem på block_dev.

class os.VfsPosix(root: str | None = None)

Skapar ett filsystemsobjekt som kommer åt värdens POSIX-filsystem. Om root anges bör det vara en sökväg i värdfilsystemet som ska användas som rot för VfsPosix-objektet. Annars används den aktuella katalogen i värdfilsystemet.

Anteckning

VfsPosix är endast tillgängligt på Unix-porten; det finns inte på OpenMV Cam.