os — základní služby „operačního systému“¶
Modul os obsahuje funkce pro přístup k souborovému systému a jeho připojení, přesměrování a duplikaci terminálu a funkce uname a urandom.
Obecné funkce¶
- os.uname() Tuple[str, str, str, str, str]¶
Vrátí n-tici (případně pojmenovanou n-tici) obsahující informace o podkladovém zařízení a/nebo jeho operačním systému. N-tice má pět polí v následujícím pořadí, z nichž každé je řetězec:
sysname– Název podkladového systémunodename– Síťový název (může být stejný jakosysname)release– Verze podkladového systémuversion– Verze MicroPython a datum sestavenímachine– Identifikátor podkladového hardwaru (např. deska, CPU)
- os.urandom(n: int) bytes¶
Vrátí objekt bytes s n náhodnými byty. Zdroj je kryptograficky vhodný na každé podporované kameře, i když se implementace liší podle portu:
STM32 kamery (M4, M7, H7, H7+, PT, N6) používají hardwarovou periferii RNG čipu STM32.
i.MX RT1062 kamery (RT1060) používají hardwarový TRNG čipu.
Alif Ensemble kamery (AE3) používají hardwarovou službu náhodných čísel Secure Enclave.
Arduino Nano 33 BLE Sense používá hardwarovou periferii RNG čipu nRF52.
Arduino Nano RP2040 Connect nemá žádný hardwarový TRNG; PRNG z pico-sdk je inicializován a průběžně přimíchávaný se zdroji entropie na čipu RP2040.
Přístup k souborovému systému¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Tato funkce vrací iterátor, který poté generuje n-tice odpovídající položkám v adresáři, který vypisuje. Bez argumentu vypíše aktuální adresář, jinak vypíše adresář zadaný v dir.
N-tice mají tvar (name, type, inode[, size]):
name je řetězec (nebo bytes, pokud je dir objekt bytes) a je názvem položky;
type je celé číslo, které určuje typ položky, kde 0x4000 značí adresáře a 0x8000 běžné soubory;
inode je celé číslo odpovídající inodu souboru a může být 0 u souborových systémů, které takový pojem nemají.
size je celé číslo, které může být zahrnuto v závislosti na typu souborového systému. U položek souborů size představuje velikost souboru nebo -1, pokud není známa. Jeho význam je u položek adresářů aktuálně nedefinovaný.
- os.listdir(dir: str | None = None) List[str]¶
Bez argumentu vypíše aktuální adresář. Jinak vypíše zadaný adresář.
- os.statvfs(path: str) Tuple¶
Získá stav souborového systému.
Vrátí n-tici s informacemi o souborovém systému v následujícím pořadí:
f_bsize– Velikost bloku souborového systémuf_frsize– Velikost fragmentuf_blocks– Velikost souborového systému v jednotkách f_frsizef_bfree– Počet volných blokůf_bavail– Počet volných bloků pro neprivilegované uživatelef_files– Počet inodůf_ffree– Počet volných inodůf_favail– Počet volných inodů pro neprivilegované uživatelef_flag– Příznaky připojeníf_namemax– Maximální délka názvu souboru
Parametry týkající se inodů:
f_files,f_ffree,f_favaila parametrf_flagmohou vrátit0, protože nemusí být dostupné v implementaci specifické pro daný port.
Přesměrování a duplikace terminálu¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Duplikuje nebo přepne terminál MicroPython (REPL) na zadaný objekt podobný stream. Argument stream_object musí být nativní stream objekt nebo musí být odvozen od
io.IOBasea implementovat metodyreadinto()awrite(). Stream by měl být v neblokujícím režimu areadinto()by měl vracetNone, pokud nejsou k dispozici žádná data ke čtení.Po zavolání této funkce se veškerý výstup terminálu opakuje na tomto streamu a jakýkoli vstup dostupný na streamu je předán na vstup terminálu.
Parametr index by měl být nezáporné celé číslo a určuje, který duplikační slot je nastaven. Daný port může implementovat více než jeden slot (slot 0 bude vždy dostupný) a v takovém případě je vstup a výstup terminálu duplikován na všech nastavených slotech.
Pokud je jako stream_object předáno
None, je duplikace na slotu zadaném v index zrušena.Funkce vrací předchozí objekt podobný streamu v daném slotu.
- os.dupterm_notify(obj_in: Any, /) None¶
Oznámí REPL MicroPython, že je na objektu podobném streamu, dříve registrovaném přes
os.dupterm(), k dispozici vstup.Tato funkce by měla být volána vlastními implementacemi streamu (např. UART, Bluetooth nebo jiné REPL streamy mimo USB) k informování REPL, že je vstup připraven ke čtení. Správné použití zajišťuje, že speciální znaky jako Ctrl+C (používaný k vyvolání KeyboardInterrupt) jsou REPL zpracovány bezodkladně, což umožňuje očekávané chování přerušení pro uživatelský kód.
Parametr obj_in je funkcí
os.dupterm_notify()ignorován, ale je vyžadován, aby bylo možné volat dupterm_notify z obsluhy přerušení, jako jeUART.irq().Příklad:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Poznámka
Pokud není funkce
dupterm_notify()zavolána, vstup z vlastního streamu nemusí být detekován nebo zpracován až do dalšího dotazování REPL, což může zpozdit KeyboardInterrupty nebo jiné řídicí signály. To je obzvláště důležité u UART, Bluetooth a jiných nestandardních REPL připojení, kde není automatické oznamování zaručeno.
Připojení souborového systému¶
Následující funkce a třídy byly přesunuty do modulu vfs. V tomto modulu jsou poskytovány pouze kvůli zpětné kompatibilitě a budou odstraněny ve verzi 2 MicroPython.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Připojí objekt souborového systému fsobj na umístění ve VFS zadané řetězcem mount_point. fsobj může být VFS objekt, který má metodu
mount(), nebo blokové zařízení. Pokud jde o blokové zařízení, typ souborového systému je automaticky detekován (pokud není rozpoznán žádný souborový systém, je vyvolána výjimka). mount_point může být'/'pro připojení fsobj ke kořeni, nebo'/<name>'pro připojení do podadresáře pod kořenem.Pokud je readonly
True, je souborový systém připojen pouze pro čtení.Během procesu připojování je na objektu souborového systému volána metoda
mount().Vyvolá
OSError(EPERM), pokud je mount_point již připojen.
- os.mount() List[Tuple[Any, str]]
Bez argumentů
mount()vrátí seznam n-tic představujících všechny aktivní body připojení.Vrácený seznam má tvar [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Odpojí souborový systém. mount_point může být řetězec pojmenovávající umístění připojení, nebo dříve připojený objekt souborového systému. Během procesu odpojování je na objektu souborového systému volána metoda
umount().Vyvolá
OSError(EINVAL), pokud mount_point není nalezen.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Vytvoří objekt souborového systému, který používá formát souborového systému FAT. Úložiště souborového systému FAT poskytuje block_dev. Objekty vytvořené tímto konstruktorem lze připojit pomocí
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
Vytvoří souborový systém FAT na block_dev.
- class os.VfsPosix(root: str | None = None)¶
Vytvoří objekt souborového systému, který přistupuje k hostitelskému POSIX souborovému systému. Pokud je zadán root, měla by to být cesta v hostitelském souborovém systému, která se použije jako kořen objektu
VfsPosix. Jinak se použije aktuální adresář hostitelského souborového systému.Poznámka
VfsPosixje dostupný pouze na Unix portu; na OpenMV Cam není přítomen.