os — basale “besturingssysteem”-services¶
De module os bevat functies voor toegang tot en het mounten van het bestandssysteem, terminalomleiding en -duplicatie, en de functies uname en urandom.
Algemene functies¶
- os.uname() Tuple[str, str, str, str, str]¶
Geeft een tuple (mogelijk een named tuple) terug met informatie over de onderliggende machine en/of het besturingssysteem ervan. De tuple heeft vijf velden in de volgende volgorde, die elk een string zijn:
sysname– De naam van het onderliggende systeemnodename– De netwerknaam (kan gelijk zijn aansysname)release– De versie van het onderliggende systeemversion– De MicroPython-versie en bouwdatummachine– Een identificatie voor de onderliggende hardware (bijv. board, CPU)
- os.urandom(n: int) bytes¶
Geeft een bytes-object terug met n willekeurige bytes. De bron is cryptografisch geschikt op elke ondersteunde cam, hoewel de implementatie per port verschilt:
STM32-cams (M4, M7, H7, H7+, PT, N6) gebruiken het hardware-RNG-randapparaat van de STM32.
i.MX RT1062-cams (RT1060) gebruiken de hardware-TRNG van de chip.
Alif Ensemble-cams (AE3) gebruiken de hardware-willekeurigheidsservice van de Secure Enclave.
Arduino Nano 33 BLE Sense gebruikt het hardware-RNG-randapparaat van de nRF52.
Arduino Nano RP2040 Connect heeft geen hardware-TRNG; de PRNG van de pico-sdk wordt geïnitialiseerd en continu opnieuw gemengd met de on-chip entropiebronnen van de RP2040.
Toegang tot het bestandssysteem¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Deze functie geeft een iterator terug die vervolgens tuples oplevert die overeenkomen met de items in de map die wordt opgesomd. Zonder argument somt deze de huidige map op, anders somt deze de map op die door dir wordt opgegeven.
De tuples hebben de vorm (name, type, inode[, size]):
name is een string (of bytes als dir een bytes-object is) en is de naam van het item;
type is een geheel getal dat het type van het item aangeeft, met 0x4000 voor mappen en 0x8000 voor reguliere bestanden;
inode is een geheel getal dat overeenkomt met de inode van het bestand, en kan 0 zijn voor bestandssystemen die zo’n begrip niet kennen.
size is een geheel getal dat kan worden opgenomen afhankelijk van het type bestandssysteem. Voor bestandsitems stelt size de grootte van het bestand voor, of -1 indien onbekend. De betekenis ervan is momenteel ongedefinieerd voor mapitems.
- os.listdir(dir: str | None = None) List[str]¶
Somt zonder argument de huidige map op. Anders somt deze de opgegeven map op.
- os.statvfs(path: str) Tuple¶
Verkrijg de status van een bestandssysteem.
Geeft een tuple terug met de bestandssysteeminformatie in de volgende volgorde:
f_bsize– Blokgrootte van het bestandssysteemf_frsize– Fragmentgroottef_blocks– Grootte van het fs in f_frsize-eenhedenf_bfree– Aantal vrije blokkenf_bavail– Aantal vrije blokken voor niet-bevoorrechte gebruikersf_files– Aantal inodesf_ffree– Aantal vrije inodesf_favail– Aantal vrije inodes voor niet-bevoorrechte gebruikersf_flag– Mount-vlaggenf_namemax– Maximale bestandsnaamlengte
Parameters met betrekking tot inodes:
f_files,f_ffree,f_favailen de parameterf_flagkunnen0teruggeven, aangezien ze niet beschikbaar kunnen zijn in een port-specifieke implementatie.
Terminalomleiding en -duplicatie¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Dupliceer of schakel de MicroPython-terminal (de REPL) op het opgegeven stream-achtige object. Het argument stream_object moet een native stream-object zijn, of afleiden van
io.IOBaseen de methodenreadinto()enwrite()implementeren. De stream moet in niet-blokkerende modus staan enreadinto()moetNoneteruggeven als er geen gegevens beschikbaar zijn om te lezen.Na het aanroepen van deze functie wordt alle terminaluitvoer herhaald op deze stream, en wordt alle invoer die op de stream beschikbaar is doorgegeven aan de terminalinvoer.
De parameter index moet een niet-negatief geheel getal zijn en geeft aan welke duplicatieslot wordt ingesteld. Een bepaalde port kan meer dan één slot implementeren (slot 0 is altijd beschikbaar) en in dat geval wordt terminalinvoer en -uitvoer gedupliceerd op alle slots die zijn ingesteld.
Als
Nonewordt doorgegeven als stream_object, wordt de duplicatie geannuleerd op het slot dat door index wordt opgegeven.De functie geeft het vorige stream-achtige object in het opgegeven slot terug.
- os.dupterm_notify(obj_in: Any, /) None¶
Stel de MicroPython-REPL op de hoogte dat er invoer beschikbaar is op een stream-achtig object dat eerder is geregistreerd via
os.dupterm().Deze functie moet worden aangeroepen door aangepaste stream-implementaties (bijv. UART, Bluetooth of andere niet-USB-REPL-streams) om de REPL te informeren dat er invoer klaar is om te worden gelezen. Correct gebruik zorgt ervoor dat speciale tekens zoals Ctrl+C (gebruikt om een KeyboardInterrupt te activeren) snel door de REPL worden verwerkt, wat het verwachte onderbrekingsgedrag voor gebruikerscode mogelijk maakt.
De parameter obj_in wordt door
os.dupterm_notify()genegeerd, maar is vereist om dupterm_notify te kunnen aanroepen vanuit een interrupt-handler zoalsUART.irq().Voorbeeld:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Notitie
Als de functie
dupterm_notify()niet wordt aangeroepen, wordt invoer van de aangepaste stream mogelijk pas bij de volgende REPL-poll gedetecteerd of verwerkt, wat KeyboardInterrupts of andere besturingssignalen kan vertragen. Dit is met name belangrijk voor UART, Bluetooth en andere niet-standaard REPL-verbindingen, waar automatische notificatie niet gegarandeerd is.
Bestandssysteem mounten¶
De volgende functies en klassen zijn verplaatst naar de module vfs. Ze worden in deze module alleen aangeboden voor achterwaartse compatibiliteit en zullen in versie 2 van MicroPython worden verwijderd.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Mount het bestandssysteemobject fsobj op de locatie in de VFS die door de string mount_point wordt opgegeven. fsobj kan een VFS-object zijn dat een
mount()-methode heeft, of een blokapparaat. Als het een blokapparaat is, wordt het type bestandssysteem automatisch gedetecteerd (er wordt een uitzondering opgeworpen als er geen bestandssysteem werd herkend). mount_point kan'/'zijn om fsobj op de root te mounten, of'/<name>'om het op een submap onder de root te mounten.Als readonly gelijk is aan
True, wordt het bestandssysteem alleen-lezen gemount.Tijdens het mount-proces wordt de methode
mount()op het bestandssysteemobject aangeroepen.Werpt
OSError(EPERM)op als mount_point al gemount is.
- os.mount() List[Tuple[Any, str]]
Zonder argumenten voor
mount(), geef een lijst van tuples terug die alle actieve mountpunten voorstellen.De teruggegeven lijst heeft de vorm [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Unmount een bestandssysteem. mount_point kan een string zijn die de mount-locatie benoemt, of een eerder gemount bestandssysteemobject. Tijdens het unmount-proces wordt de methode
umount()op het bestandssysteemobject aangeroepen.Werpt
OSError(EINVAL)op als mount_point niet wordt gevonden.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Maak een bestandssysteemobject aan dat de FAT-bestandssysteemindeling gebruikt. De opslag van het FAT-bestandssysteem wordt geleverd door block_dev. Objecten die door deze constructor worden aangemaakt, kunnen worden gemount met
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
Bouw een FAT-bestandssysteem op block_dev.
- class os.VfsPosix(root: str | None = None)¶
Maak een bestandssysteemobject aan dat toegang geeft tot het POSIX-bestandssysteem van de host. Als root is opgegeven, moet het een pad in het host-bestandssysteem zijn dat als root van het
VfsPosix-object wordt gebruikt. Anders wordt de huidige map van het host-bestandssysteem gebruikt.Notitie
VfsPosixis alleen beschikbaar op de Unix-port; het is niet aanwezig op de OpenMV Cam.