os — osnovne usluge „operacijskog sustava”¶
Modul os sadrži funkcije za pristup datotečnom sustavu i montiranje, preusmjeravanje i dupliranje terminala te funkcije uname i urandom.
Općenite funkcije¶
- os.uname() Tuple[str, str, str, str, str]¶
Vraća torku (moguće imenovanu torku) koja sadrži informacije o osnovnom stroju i/ili njegovom operacijskom sustavu. Torka ima pet polja sljedećim redoslijedom, od kojih je svako niz znakova:
sysname– Naziv osnovnog sustavanodename– Mrežni naziv (može biti isti kaosysname)release– Verzija osnovnog sustavaversion– Verzija MicroPythona i datum izgradnjemachine– Identifikator osnovnog hardvera (npr. ploča, CPU)
- os.urandom(n: int) bytes¶
Vraća bytes objekt s n nasumičnih bajtova. Izvor je kriptografski prikladan na svakoj podržanoj kameri, iako se implementacija razlikuje ovisno o portu:
STM32 kamere (M4, M7, H7, H7+, PT, N6) koriste hardversku RNG periferiju STM32.
i.MX RT1062 kamere (RT1060) koriste hardverski TRNG čipa.
Alif Ensemble kamere (AE3) koriste hardversku uslugu nasumičnosti Secure Enclavea.
Arduino Nano 33 BLE Sense koristi hardversku RNG periferiju nRF52.
Arduino Nano RP2040 Connect nema hardverski TRNG; PRNG iz pico-sdk-a inicijaliziran je sjemenom i kontinuirano se ponovno miješa s izvorima entropije na čipu RP2040.
Pristup datotečnom sustavu¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Ova funkcija vraća iterator koji zatim daje torke koje odgovaraju unosima u direktoriju koji se ispisuje. Bez argumenta ispisuje trenutni direktorij, inače ispisuje direktorij zadan s dir.
Torke imaju oblik (name, type, inode[, size]):
name je niz znakova (ili bajtovi ako je dir bytes objekt) i predstavlja naziv unosa;
type je cijeli broj koji određuje vrstu unosa, gdje je 0x4000 za direktorije i 0x8000 za obične datoteke;
inode je cijeli broj koji odgovara inodeu datoteke, a može biti 0 za datotečne sustave koji nemaju takav pojam.
size je cijeli broj koji može biti uključen ovisno o vrsti datotečnog sustava. Za datotečne unose size predstavlja veličinu datoteke ili -1 ako je nepoznata. Njegovo značenje trenutno nije definirano za unose direktorija.
- os.listdir(dir: str | None = None) List[str]¶
Bez argumenta ispisuje trenutni direktorij. Inače ispisuje zadani direktorij.
- os.statvfs(path: str) Tuple¶
Dohvaća status datotečnog sustava.
Vraća torku s informacijama o datotečnom sustavu sljedećim redoslijedom:
f_bsize– Veličina bloka datotečnog sustavaf_frsize– Veličina fragmentaf_blocks– Veličina datotečnog sustava u jedinicama f_frsizef_bfree– Broj slobodnih blokovaf_bavail– Broj slobodnih blokova za neprivilegirane korisnikef_files– Broj inodeaf_ffree– Broj slobodnih inodeaf_favail– Broj slobodnih inodea za neprivilegirane korisnikef_flag– Zastavice montiranjaf_namemax– Maksimalna duljina naziva datoteke
Parametri povezani s inodeima:
f_files,f_ffree,f_favaili parametarf_flagmogu vratiti0jer mogu biti nedostupni u implementaciji specifičnoj za port.
Preusmjeravanje i dupliranje terminala¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Duplicira ili prebacuje MicroPython terminal (REPL) na zadani objekt nalik stream. Argument stream_object mora biti izvorni stream objekt, ili izvedenica iz
io.IOBasekoja implementira metodereadinto()iwrite(). Stream bi trebao biti u neblokirajućem načinu rada, areadinto()bi trebao vratitiNoneako nema dostupnih podataka za čitanje.Nakon pozivanja ove funkcije sav izlaz terminala ponavlja se na tom streamu, a svaki ulaz dostupan na streamu prosljeđuje se ulazu terminala.
Parametar index trebao bi biti nenegativni cijeli broj i određuje koji se utor za dupliranje postavlja. Određeni port može implementirati više od jednog utora (utor 0 uvijek će biti dostupan), pa se u tom slučaju ulaz i izlaz terminala dupliciraju na svim postavljenim utorima.
Ako se kao stream_object proslijedi
None, dupliranje na utoru zadanom s index se otkazuje.Funkcija vraća prethodni objekt nalik streamu u zadanom utoru.
- os.dupterm_notify(obj_in: Any, /) None¶
Obavještava MicroPython REPL da je ulaz dostupan na objektu nalik streamu prethodno registriranom putem
os.dupterm().Ovu funkciju trebaju pozivati prilagođene implementacije streamova (npr. UART, Bluetooth ili drugi REPL streamovi koji nisu USB) kako bi obavijestile REPL da je ulaz spreman za čitanje. Pravilna upotreba osigurava da REPL pravovremeno obrađuje posebne znakove poput Ctrl+C (koji se koristi za pokretanje KeyboardInterrupt), omogućujući očekivano ponašanje prekida za korisnički kod.
Parametar obj_in zanemaruje
os.dupterm_notify(), ali je potreban kako bi se omogućilo pozivanje dupterm_notify iz rukovatelja prekida poputUART.irq().Primjer:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Napomena
Ako se funkcija
dupterm_notify()ne pozove, ulaz iz prilagođenog streama možda neće biti otkriven ili obrađen do sljedećeg REPL ispitivanja, čime se potencijalno odgađa KeyboardInterrupt ili drugi kontrolni signali. Ovo je posebno važno za UART, Bluetooth i druge nestandardne REPL veze, gdje automatska obavijest nije zajamčena.
Montiranje datotečnog sustava¶
Sljedeće funkcije i klase premještene su u modul vfs. U ovom su modulu navedene samo radi povratne kompatibilnosti i bit će uklonjene u verziji 2 MicroPythona.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Montira objekt datotečnog sustava fsobj na lokaciju u VFS-u zadanu nizom mount_point. fsobj može biti VFS objekt koji ima metodu
mount(), ili blok uređaj. Ako je riječ o blok uređaju, vrsta datotečnog sustava automatski se otkriva (podiže se iznimka ako nijedan datotečni sustav nije prepoznat). mount_point može biti'/'za montiranje fsobj u korijen, ili'/<name>'za montiranje u poddirektorij ispod korijena.Ako je readonly postavljen na
True, datotečni sustav montira se samo za čitanje.Tijekom procesa montiranja na objektu datotečnog sustava poziva se metoda
mount().Podiže
OSError(EPERM)ako je mount_point već montiran.
- os.mount() List[Tuple[Any, str]]
Bez argumenata za
mount()vraća popis torki koje predstavljaju sve aktivne točke montiranja.Vraćeni popis ima oblik [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Demontira datotečni sustav. mount_point može biti niz koji imenuje lokaciju montiranja, ili prethodno montirani objekt datotečnog sustava. Tijekom procesa demontiranja na objektu datotečnog sustava poziva se metoda
umount().Podiže
OSError(EINVAL)ako mount_point nije pronađen.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Stvara objekt datotečnog sustava koji koristi format datotečnog sustava FAT. Pohranu FAT datotečnog sustava pruža block_dev. Objekti stvoreni ovim konstruktorom mogu se montirati pomoću
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
Izgrađuje FAT datotečni sustav na block_dev.
- class os.VfsPosix(root: str | None = None)¶
Stvara objekt datotečnog sustava koji pristupa POSIX datotečnom sustavu domaćina. Ako je naveden root, on bi trebao biti putanja u datotečnom sustavu domaćina koja se koristi kao korijen objekta
VfsPosix. Inače se koristi trenutni direktorij datotečnog sustava domaćina.Napomena
VfsPosixdostupan je samo na Unix portu; nije prisutan na OpenMV Cam.