os — services basiques de « système d’exploitation »¶
Le module os contient des fonctions pour l’accès au système de fichiers et le montage, la redirection et la duplication du terminal, ainsi que les fonctions uname et urandom.
Fonctions générales¶
- os.uname() Tuple[str, str, str, str, str]¶
Renvoie un tuple (éventuellement un tuple nommé) contenant des informations sur la machine sous-jacente et/ou son système d’exploitation. Le tuple comporte cinq champs, dans l’ordre suivant, chacun étant une chaîne de caractères :
sysname– Le nom du système sous-jacentnodename– Le nom réseau (peut être identique àsysname)release– La version du système sous-jacentversion– La version de MicroPython et la date de compilationmachine– Un identifiant du matériel sous-jacent (par exemple carte, CPU)
- os.urandom(n: int) bytes¶
Renvoie un objet bytes contenant n octets aléatoires. La source est adaptée à un usage cryptographique sur toutes les caméras prises en charge, bien que l’implémentation varie selon le port :
Les caméras STM32 (M4, M7, H7, H7+, PT, N6) utilisent le périphérique matériel RNG du STM32.
Les caméras i.MX RT1062 (RT1060) utilisent le TRNG matériel de la puce.
Les caméras Alif Ensemble (AE3) utilisent le service aléatoire matériel du Secure Enclave.
L’Arduino Nano 33 BLE Sense utilise le périphérique matériel RNG du nRF52.
L’Arduino Nano RP2040 Connect ne dispose pas de TRNG matériel ; le PRNG du pico-sdk est initialisé puis continuellement remélangé avec les sources d’entropie internes du RP2040.
Accès au système de fichiers¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
Cette fonction renvoie un itérateur qui produit ensuite des tuples correspondant aux entrées du répertoire qu’elle liste. Sans argument, elle liste le répertoire courant, sinon elle liste le répertoire donné par dir.
Les tuples ont la forme (name, type, inode[, size]) :
name est une chaîne de caractères (ou des bytes si dir est un objet bytes) et correspond au nom de l’entrée ;
type est un entier qui spécifie le type de l’entrée, avec 0x4000 pour les répertoires et 0x8000 pour les fichiers ordinaires ;
inode est un entier correspondant à l’inode du fichier, et peut valoir 0 pour les systèmes de fichiers qui n’ont pas une telle notion.
size est un entier qui peut être inclus selon le type de système de fichiers. Pour les entrées de fichier, size représente la taille du fichier, ou -1 si elle est inconnue. Sa signification est actuellement indéfinie pour les entrées de répertoire.
- os.listdir(dir: str | None = None) List[str]¶
Sans argument, liste le répertoire courant. Sinon, liste le répertoire donné.
- os.statvfs(path: str) Tuple¶
Récupère le statut d’un système de fichiers.
Renvoie un tuple contenant les informations du système de fichiers dans l’ordre suivant :
f_bsize– Taille de bloc du système de fichiersf_frsize– Taille de fragmentf_blocks– Taille du système de fichiers en unités de f_frsizef_bfree– Nombre de blocs libresf_bavail– Nombre de blocs libres pour les utilisateurs non privilégiésf_files– Nombre d’inodesf_ffree– Nombre d’inodes libresf_favail– Nombre d’inodes libres pour les utilisateurs non privilégiésf_flag– Indicateurs de montagef_namemax– Longueur maximale d’un nom de fichier
Paramètres relatifs aux inodes :
f_files,f_ffree,f_favailet le paramètref_flagpeuvent renvoyer0car ils peuvent être indisponibles dans une implémentation spécifique à un port.
Redirection et duplication du terminal¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
Duplique ou bascule le terminal MicroPython (le REPL) sur l’objet de type stream donné. L’argument stream_object doit être un objet flux natif, ou dériver de
io.IOBaseet implémenter les méthodesreadinto()etwrite(). Le flux doit être en mode non bloquant etreadinto()doit renvoyerNones’il n’y a aucune donnée disponible à lire.Après l’appel de cette fonction, toute sortie du terminal est répétée sur ce flux, et toute entrée disponible sur le flux est transmise à l’entrée du terminal.
Le paramètre index doit être un entier non négatif et spécifie quel emplacement de duplication est défini. Un port donné peut implémenter plusieurs emplacements (l’emplacement 0 est toujours disponible) et, dans ce cas, l’entrée et la sortie du terminal sont dupliquées sur tous les emplacements définis.
Si
Noneest passé comme stream_object, alors la duplication est annulée sur l’emplacement donné par index.La fonction renvoie l’objet de type flux précédent dans l’emplacement donné.
- os.dupterm_notify(obj_in: Any, /) None¶
Notifie le REPL MicroPython que des données sont disponibles sur un objet de type flux préalablement enregistré via
os.dupterm().Cette fonction doit être appelée par les implémentations de flux personnalisées (par exemple, UART, Bluetooth ou d’autres flux REPL non USB) pour informer le REPL que des données sont prêtes à être lues. Une utilisation correcte garantit que les caractères spéciaux tels que Ctrl+C (utilisé pour déclencher KeyboardInterrupt) sont traités rapidement par le REPL, ce qui permet d’obtenir le comportement d’interruption attendu pour le code utilisateur.
Le paramètre obj_in est ignoré par
os.dupterm_notify(), mais est requis pour permettre d’appeler dupterm_notify depuis un gestionnaire d’interruption tel queUART.irq().Exemple :
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
Note
Si la fonction
dupterm_notify()n’est pas appelée, l’entrée du flux personnalisé risque de ne pas être détectée ou traitée avant le prochain sondage du REPL, ce qui peut retarder les KeyboardInterrupts ou d’autres signaux de contrôle. Ceci est particulièrement important pour les connexions REPL via UART, Bluetooth et autres connexions non standard, où la notification automatique n’est pas garantie.
Montage du système de fichiers¶
Les fonctions et classes suivantes ont été déplacées vers le module vfs. Elles ne sont fournies dans ce module qu’à des fins de compatibilité ascendante et seront supprimées dans la version 2 de MicroPython.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
Monte l’objet de système de fichiers fsobj à l’emplacement du VFS donné par la chaîne mount_point. fsobj peut être un objet VFS qui possède une méthode
mount(), ou un périphérique bloc. S’il s’agit d’un périphérique bloc, le type de système de fichiers est détecté automatiquement (une exception est levée si aucun système de fichiers n’a été reconnu). mount_point peut être'/'pour monter fsobj à la racine, ou'/<name>'pour le monter dans un sous-répertoire sous la racine.Si readonly vaut
True, le système de fichiers est monté en lecture seule.Pendant le processus de montage, la méthode
mount()est appelée sur l’objet de système de fichiers.Lève
OSError(EPERM)si mount_point est déjà monté.
- os.mount() List[Tuple[Any, str]]
Sans argument,
mount()renvoie une liste de tuples représentant tous les points de montage actifs.La liste renvoyée a la forme [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
Démonte un système de fichiers. mount_point peut être une chaîne nommant l’emplacement de montage, ou un objet de système de fichiers précédemment monté. Pendant le processus de démontage, la méthode
umount()est appelée sur l’objet de système de fichiers.Lève
OSError(EINVAL)si mount_point est introuvable.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
Crée un objet de système de fichiers qui utilise le format de système de fichiers FAT. Le stockage du système de fichiers FAT est fourni par block_dev. Les objets créés par ce constructeur peuvent être montés à l’aide de
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
Construit un système de fichiers FAT sur block_dev.
- class os.VfsPosix(root: str | None = None)¶
Crée un objet de système de fichiers qui accède au système de fichiers POSIX de l’hôte. Si root est spécifié, il doit s’agir d’un chemin dans le système de fichiers de l’hôte à utiliser comme racine de l’objet
VfsPosix. Sinon, le répertoire courant du système de fichiers de l’hôte est utilisé.Note
VfsPosixn’est disponible que sur le port Unix ; il n’est pas présent sur l’OpenMV Cam.