os — perustason ”käyttöjärjestelmä”-palvelut¶
os-moduuli sisältää funktioita tiedostojärjestelmän käyttöön ja liittämiseen, päätteen uudelleenohjaukseen ja monistamiseen sekä uname- ja urandom-funktiot.
Yleiset funktiot¶
- os.uname() Tuple[str, str, str, str, str]¶
Palauttaa monikon (mahdollisesti nimetyn monikon), joka sisältää tietoa taustalla olevasta koneesta ja/tai sen käyttöjärjestelmästä. Monikossa on viisi kenttää seuraavassa järjestyksessä, kukin niistä merkkijono:
sysname– Taustalla olevan järjestelmän niminodename– Verkkonimi (voi olla sama kuinsysname)release– Taustalla olevan järjestelmän versioversion– MicroPython-versio ja käännöspäivämäärämachine– Taustalla olevan laitteiston tunniste (esim. piirilevy, suoritin)
- os.urandom(n: int) bytes¶
Palauttaa tavuolion, jossa on n satunnaista tavua. Lähde on kryptografisesti soveltuva jokaisella tuetulla kameralla, vaikkakin toteutus vaihtelee porttikohtaisesti:
STM32-kamerat (M4, M7, H7, H7+, PT, N6) käyttävät STM32:n laitteiston RNG-oheislaitetta.
i.MX RT1062 -kamerat (RT1060) käyttävät piirin laitteiston TRNG:tä.
Alif Ensemble -kamerat (AE3) käyttävät Secure Enclaven laitteiston satunnaislukupalvelua.
Arduino Nano 33 BLE Sense käyttää nRF52:n laitteiston RNG-oheislaitetta.
Arduino Nano RP2040 Connect -laitteessa ei ole laitteiston TRNG:tä; pico-sdk:n PRNG alustetaan siemenellä ja sekoitetaan jatkuvasti uudelleen RP2040:n sisäisillä entropialähteillä.
Tiedostojärjestelmän käyttö¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Tämä funktio palauttaa iteraattorin, joka tuottaa monikoita listaamansa hakemiston merkintöjä vastaten. Ilman argumenttia se listaa nykyisen hakemiston, muutoin se listaa dir-argumentin antaman hakemiston.
Monikot ovat muotoa (name, type, inode[, size]):
name on merkkijono (tai tavut, jos dir on tavuolio) ja se on merkinnän nimi;
type on kokonaisluku, joka määrittää merkinnän tyypin: 0x4000 hakemistoille ja 0x8000 tavallisille tiedostoille;
inode on kokonaisluku, joka vastaa tiedoston inodea, ja voi olla 0 tiedostojärjestelmissä, joissa ei ole tällaista käsitettä.
size on kokonaisluku, joka voidaan sisällyttää tiedostojärjestelmän tyypistä riippuen. Tiedostomerkinnöille size edustaa tiedoston kokoa tai -1, jos kokoa ei tiedetä. Sen merkitys hakemistomerkinnöille on tällä hetkellä määrittelemätön.
- os.listdir(dir: str | None = None) List[str]¶
Ilman argumenttia listaa nykyisen hakemiston. Muutoin listaa annetun hakemiston.
- os.statvfs(path: str) Tuple¶
Hakee tiedostojärjestelmän tilatiedot.
Palauttaa monikon, jossa on tiedostojärjestelmän tiedot seuraavassa järjestyksessä:
f_bsize– Tiedostojärjestelmän lohkokokof_frsize– Fragmentin kokof_blocks– Tiedostojärjestelmän koko f_frsize-yksiköissäf_bfree– Vapaiden lohkojen määräf_bavail– Vapaiden lohkojen määrä etuoikeudettomille käyttäjillef_files– Inodejen määräf_ffree– Vapaiden inodejen määräf_favail– Vapaiden inodejen määrä etuoikeudettomille käyttäjillef_flag– Liitoslput (mount flags)f_namemax– Tiedostonimen enimmäispituus
Inodeihin liittyvät parametrit:
f_files,f_ffree,f_favailjaf_flag-parametri voivat palauttaa arvon0, koska ne voivat olla saatavilla porttikohtaisessa toteutuksessa.
Päätteen uudelleenohjaus ja monistaminen¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Monistaa tai vaihtaa MicroPython-päätteen (REPL:n) annettuun stream-tyyppiseen olioon. stream_object-argumentin on oltava natiivi stream-olio, tai sen on perittävä
io.IOBaseja toteutettavareadinto()- jawrite()-metodit. Streamin tulisi olla ei-estävässä tilassa, jareadinto()tulisi palauttaaNone, jos luettavaa dataa ei ole.Tämän funktion kutsumisen jälkeen kaikki päätteen tuloste toistetaan tähän streamiin, ja kaikki streamissa saatavilla oleva syöte välitetään päätteen syötteeseen.
index-parametrin tulisi olla ei-negatiivinen kokonaisluku, ja se määrittää, mikä monistuspaikka asetetaan. Tietty portti voi toteuttaa useamman kuin yhden paikan (paikka 0 on aina käytettävissä), jolloin päätteen syöte ja tuloste monistetaan kaikkiin asetettuihin paikkoihin.
Jos stream_object-argumentiksi annetaan
None, monistus perutaan index-parametrin antamasta paikasta.Funktio palauttaa annetussa paikassa aiemmin olleen stream-tyyppisen olion.
- os.dupterm_notify(obj_in: Any, /) None¶
Ilmoittaa MicroPython REPL:lle, että syötettä on saatavilla aiemmin
os.dupterm()-funktiolla rekisteröidyssä stream-tyyppisessä oliossa.Tätä funktiota tulisi kutsua mukautetuista stream-toteutuksista (esim. UART, Bluetooth tai muut ei-USB-pohjaiset REPL-streamit), jotta REPL:lle ilmoitetaan, että syöte on valmiina luettavaksi. Asianmukainen käyttö varmistaa, että erikoismerkit kuten Ctrl+C (jolla laukaistaan KeyboardInterrupt) käsitellään REPL:ssä viipymättä, mahdollistaen odotetun keskeytyskäyttäytymisen käyttäjän koodille.
obj_in-parametria ei huomioida
os.dupterm_notify()-funktiossa, mutta se vaaditaan, jotta dupterm_notify voidaan kutsua keskeytyskäsittelijästä kutenUART.irq().Esimerkki:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Muista
Jos
dupterm_notify()-funktiota ei kutsuta, mukautetun streamin syötettä ei välttämättä havaita tai käsitellä ennen seuraavaa REPL-kyselyä, mikä saattaa viivästyttää KeyboardInterrupt-keskeytyksiä tai muita ohjaussignaaleja. Tämä on erityisen tärkeää UART-, Bluetooth- ja muille epästandardeille REPL-yhteyksille, joissa automaattista ilmoitusta ei taata.
Tiedostojärjestelmän liittäminen¶
Seuraavat funktiot ja luokat on siirretty vfs-moduuliin. Ne tarjotaan tässä moduulissa vain taaksepäin yhteensopivuuden vuoksi, ja ne poistetaan MicroPythonin versiossa 2.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Liittää tiedostojärjestelmäolion fsobj VFS:n sijaintiin, jonka antaa mount_point-merkkijono. fsobj voi olla VFS-olio, jolla on
mount()-metodi, tai lohkolaite. Jos se on lohkolaite, tiedostojärjestelmän tyyppi tunnistetaan automaattisesti (poikkeus nostetaan, jos yhtään tiedostojärjestelmää ei tunnisteta). mount_point voi olla'/', jolloin fsobj liitetään juureen, tai'/<name>', jolloin se liitetään juuren alla olevaan alihakemistoon.Jos readonly on
True, tiedostojärjestelmä liitetään vain luku -tilassa.Liittämisprosessin aikana tiedostojärjestelmäoliolle kutsutaan
mount()-metodi.Nostaa
OSError(EPERM)-poikkeuksen, jos mount_point on jo liitetty.
- os.mount() List[Tuple[Any, str]]
Ilman argumentteja
mount()palauttaa listan monikoita, jotka edustavat kaikkia aktiivisia liitoskohtia.Palautettu lista on muotoa [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Irrottaa tiedostojärjestelmän. mount_point voi olla liitossijainnin nimeävä merkkijono tai aiemmin liitetty tiedostojärjestelmäolio. Irrotusprosessin aikana tiedostojärjestelmäoliolle kutsutaan
umount()-metodi.Nostaa
OSError(EINVAL)-poikkeuksen, jos mount_point-kohtaa ei löydy.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Luo tiedostojärjestelmäolion, joka käyttää FAT-tiedostojärjestelmämuotoa. FAT-tiedostojärjestelmän tallennuksen tarjoaa block_dev. Tämän rakentajan luomat oliot voidaan liittää
mount()-funktiolla.- static mkfs(block_dev: AbstractBlockDev) None¶
Rakentaa FAT-tiedostojärjestelmän block_dev-laitteelle.
- class os.VfsPosix(root: str | None = None)¶
Luo tiedostojärjestelmäolion, joka käyttää isäntäkoneen POSIX-tiedostojärjestelmää. Jos root annetaan, sen tulisi olla polku isäntäkoneen tiedostojärjestelmässä, jota käytetään
VfsPosix-olion juurena. Muutoin käytetään isäntäkoneen tiedostojärjestelmän nykyistä hakemistoa.Muista
VfsPosixon saatavilla vain Unix-portissa; sitä ei ole OpenMV Camissa.