os — alapvető „operációs rendszer” szolgáltatások¶
Az os modul a fájlrendszer-hozzáférést és -csatolást, a terminál átirányítását és duplikálását, valamint az uname és urandom függvényeket tartalmazza.
Általános függvények¶
- os.uname() Tuple[str, str, str, str, str]¶
Egy olyan tuple-t (esetleg egy névvel ellátott tuple-t) ad vissza, amely információkat tartalmaz a mögöttes gépről és/vagy annak operációs rendszeréről. A tuple öt mezőt tartalmaz a következő sorrendben, mindegyik egy karakterlánc:
sysname– A mögöttes rendszer nevenodename– A hálózati név (lehet azonos asysnameértékkel)release– A mögöttes rendszer verziójaversion– A MicroPython verziója és a fordítás dátumamachine– A mögöttes hardver azonosítója (pl. kártya, CPU)
- os.urandom(n: int) bytes¶
Egy bytes objektumot ad vissza n darab véletlen bájttal. A forrás minden támogatott kamerán kriptográfiailag megfelelő, bár a megvalósítás portonként eltér:
STM32 kamerák (M4, M7, H7, H7+, PT, N6) az STM32 hardveres RNG perifériáját használják.
i.MX RT1062 kamerák (RT1060) a chip hardveres TRNG-jét használják.
Alif Ensemble kamerák (AE3) a Secure Enclave hardveres véletlenszám-szolgáltatását használják.
Arduino Nano 33 BLE Sense az nRF52 hardveres RNG perifériáját használja.
Arduino Nano RP2040 Connect nem rendelkezik hardveres TRNG-vel; a pico-sdk PRNG kezdőértéket kap, és folyamatosan újrakeveredik az RP2040 chipen belüli entrópiaforrásaival.
Fájlrendszer-hozzáférés¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Ez a függvény egy iterátort ad vissza, amely a felsorolt könyvtár bejegyzéseinek megfelelő tuple-okat szolgáltat. Argumentum nélkül az aktuális könyvtárat listázza, egyébként a dir által megadott könyvtárat.
A tuple-ok formája (name, type, inode[, size]):
A name egy karakterlánc (vagy bytes, ha a dir egy bytes objektum), és a bejegyzés neve;
A type egy egész szám, amely a bejegyzés típusát adja meg: 0x4000 a könyvtárakhoz és 0x8000 a szabályos fájlokhoz;
Az inode egy egész szám, amely a fájl inode-jának felel meg, és 0 lehet az olyan fájlrendszereknél, amelyeknek nincs ilyen fogalmuk.
A size egy egész szám, amely a fájlrendszer típusától függően szerepelhet. Fájlbejegyzéseknél a size a fájl méretét jelenti, vagy -1, ha ismeretlen. Könyvtárbejegyzések esetén a jelentése jelenleg meghatározatlan.
- os.listdir(dir: str | None = None) List[str]¶
Argumentum nélkül az aktuális könyvtárat listázza. Egyébként a megadott könyvtárat listázza.
- os.statvfs(path: str) Tuple¶
Egy fájlrendszer állapotának lekérése.
Egy tuple-t ad vissza a fájlrendszer adataival a következő sorrendben:
f_bsize– A fájlrendszer blokkméretef_frsize– Töredékméretf_blocks– A fájlrendszer mérete f_frsize egységekbenf_bfree– A szabad blokkok számaf_bavail– A szabad blokkok száma a nem privilegizált felhasználók számáraf_files– Az inode-ok számaf_ffree– A szabad inode-ok számaf_favail– A szabad inode-ok száma a nem privilegizált felhasználók számáraf_flag– Csatolási jelzőkf_namemax– Maximális fájlnévhossz
Az inode-okkal kapcsolatos paraméterek: az
f_files,f_ffree,f_favailés azf_flagparaméter0értéket adhat vissza, mivel ezek egy portspecifikus megvalósításban nem feltétlenül elérhetők.
Terminál átirányítása és duplikálása¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
A MicroPython terminál (a REPL) duplikálása vagy átkapcsolása a megadott stream-szerű objektumra. A stream_object argumentumnak natív stream objektumnak kell lennie, vagy az
io.IOBaseosztályból kell származnia és meg kell valósítania areadinto()éswrite()metódusokat. A streamnek nem blokkoló módban kell lennie, és areadinto()Noneértéket kell, hogy visszaadjon, ha nincs olvasásra rendelkezésre álló adat.A függvény meghívása után minden terminálkimenet megismétlődik ezen a streamen, és a streamen rendelkezésre álló bármely bemenet továbbítódik a terminál bemenetére.
Az index paraméternek nemnegatív egész számnak kell lennie, és megadja, hogy melyik duplikációs hely kerül beállításra. Egy adott port több helyet is megvalósíthat (a 0-s hely mindig elérhető), és ebben az esetben a terminál bemenete és kimenete az összes beállított helyen duplikálódik.
Ha
Nonekerül átadásra stream_object gyanánt, akkor a duplikáció megszűnik az index által megadott helyen.A függvény az adott helyen lévő korábbi stream-szerű objektumot adja vissza.
- os.dupterm_notify(obj_in: Any, /) None¶
Értesíti a MicroPython REPL-t, hogy bemenet áll rendelkezésre egy korábban a
os.dupterm()segítségével regisztrált stream-szerű objektumon.Ezt a függvényt egyéni stream-megvalósításoknak (pl. UART, Bluetooth vagy más, nem USB alapú REPL streamek) kell meghívniuk, hogy értesítsék a REPL-t, hogy a bemenet olvasásra kész. A helyes használat biztosítja, hogy az olyan speciális karaktereket, mint a Ctrl+C (amely a KeyboardInterrupt kiváltására szolgál), a REPL azonnal feldolgozza, lehetővé téve a felhasználói kód várt megszakítási viselkedését.
Az obj_in paramétert a
os.dupterm_notify()figyelmen kívül hagyja, de szükséges ahhoz, hogy a dupterm_notify meghívható legyen egy megszakításkezelőből, például aUART.irq()-ből.Példa:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Megjegyzés
Ha a
dupterm_notify()függvény nem hívódik meg, az egyéni streamről érkező bemenet előfordulhat, hogy nem érzékelődik vagy nem dolgozódik fel a következő REPL lekérdezésig, ami potenciálisan késleltetheti a KeyboardInterruptokat vagy más vezérlőjeleket. Ez különösen fontos UART, Bluetooth és más, nem szabványos REPL kapcsolatok esetén, ahol az automatikus értesítés nem garantált.
Fájlrendszer-csatolás¶
A következő függvények és osztályok átkerültek a vfs modulba. Ebben a modulban csak a visszamenőleges kompatibilitás érdekében maradnak elérhetők, és a MicroPython 2-es verziójában el lesznek távolítva.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Az fsobj fájlrendszer-objektum csatolása a VFS-ben a mount_point karakterlánc által megadott helyre. Az fsobj lehet egy VFS objektum, amelynek van
mount()metódusa, vagy egy blokkeszköz. Ha blokkeszköz, akkor a fájlrendszer típusa automatikusan érzékelődik (kivétel váltódik ki, ha nem ismerhető fel fájlrendszer). A mount_point lehet'/'az fsobj gyökérbe csatolásához, vagy'/<name>'egy, a gyökér alatti alkönyvtárba való csatoláshoz.Ha a readonly értéke
True, akkor a fájlrendszer csak olvashatóként csatolódik.A csatolási folyamat során a fájlrendszer-objektumon meghívódik a
mount()metódus.OSError(EPERM)kivételt vált ki, ha a mount_point már csatolva van.
- os.mount() List[Tuple[Any, str]]
A
mount()argumentum nélküli hívása az összes aktív csatolási pontot reprezentáló tuple-ok listáját adja vissza.A visszaadott lista formája [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Egy fájlrendszer leválasztása. A mount_point lehet egy karakterlánc, amely a csatolási helyet nevezi meg, vagy egy korábban csatolt fájlrendszer-objektum. A leválasztási folyamat során a fájlrendszer-objektumon meghívódik az
umount()metódus.OSError(EINVAL)kivételt vált ki, ha a mount_point nem található.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Létrehoz egy fájlrendszer-objektumot, amely a FAT fájlrendszer-formátumot használja. A FAT fájlrendszer tárolását a block_dev biztosítja. Az ezzel a konstruktorral létrehozott objektumok a
mount()segítségével csatolhatók.- static mkfs(block_dev: AbstractBlockDev) None¶
FAT fájlrendszer felépítése a block_dev eszközön.
- class os.VfsPosix(root: str | None = None)¶
Létrehoz egy fájlrendszer-objektumot, amely a gazda POSIX fájlrendszerét éri el. Ha a root meg van adva, akkor egy elérési útnak kell lennie a gazda fájlrendszerében, amelyet a
VfsPosixobjektum gyökereként használ. Ellenkező esetben a gazda fájlrendszerének aktuális könyvtára kerül felhasználásra.Megjegyzés
A
VfsPosixcsak a Unix porton érhető el; az OpenMV Cam-en nincs jelen.