os --- 基本的な「オペレーティングシステム」サービス¶
os モジュールには、ファイルシステムアクセスとマウント、端末のリダイレクトと複製、および uname と urandom の関数が含まれています。
一般的な関数¶
- os.uname() Tuple[str, str, str, str, str]¶
基盤となるマシンおよび/またはそのオペレーティングシステムに関する情報を含むタプル(場合によっては名前付きタプル)を返します。このタプルには、次の順序で 5 つのフィールドがあり、それぞれが文字列です:
sysname-- 基盤となるシステムの名前nodename-- ネットワーク名(sysnameと同じ場合があります)release-- 基盤となるシステムのバージョンversion-- MicroPython のバージョンとビルド日machine-- 基盤となるハードウェアの識別子(例: ボード、CPU)
- os.urandom(n: int) bytes¶
n 個のランダムバイトを含む bytes オブジェクトを返します。ソースはサポートされているすべての cam で暗号学的に適切ですが、実装はポートによって異なります:
STM32 cam(M4、M7、H7、H7+、PT、N6)は STM32 ハードウェア RNG ペリフェラルを使用します。
i.MX RT1062 cam(RT1060)はチップのハードウェア TRNG を使用します。
Alif Ensemble cam(AE3)は Secure Enclave のハードウェアランダムサービスを使用します。
Arduino Nano 33 BLE Sense は nRF52 ハードウェア RNG ペリフェラルを使用します。
Arduino Nano RP2040 Connect にはハードウェア TRNG がありません。pico-sdk PRNG はシードされ、RP2040 のオンチップエントロピーソースで継続的に再ミックスされます。
ファイルシステムアクセス¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
この関数はイテレータを返し、リスト対象のディレクトリ内のエントリに対応するタプルを順に生成します。引数なしの場合はカレントディレクトリを、それ以外の場合は dir で指定されたディレクトリをリストします。
タプルは (name, type, inode[, size]) の形式を持ちます:
name は文字列(dir が bytes オブジェクトの場合は bytes)であり、エントリの名前です。
type はエントリのタイプを指定する整数で、ディレクトリの場合は 0x4000、通常ファイルの場合は 0x8000 です。
inode はファイルの inode に対応する整数で、そのような概念を持たないファイルシステムでは 0 になる場合があります。
size はファイルシステムのタイプによって含まれる場合がある整数です。ファイルエントリの場合、size はファイルのサイズを表し、不明な場合は -1 になります。ディレクトリエントリに対する意味は現在のところ未定義です。
- os.listdir(dir: str | None = None) List[str]¶
引数なしの場合は、カレントディレクトリをリストします。それ以外の場合は、指定されたディレクトリをリストします。
- os.statvfs(path: str) Tuple¶
ファイルシステムのステータスを取得します。
次の順序でファイルシステム情報を含むタプルを返します:
f_bsize-- ファイルシステムのブロックサイズf_frsize-- フラグメントサイズf_blocks-- f_frsize 単位でのファイルシステムのサイズf_bfree-- 空きブロック数f_bavail-- 非特権ユーザー向けの空きブロック数f_files-- inode 数f_ffree-- 空き inode 数f_favail-- 非特権ユーザー向けの空き inode 数f_flag-- マウントフラグf_namemax-- 最大ファイル名長
inode に関連するパラメータ:
f_files、f_ffree、f_favail、およびf_flagパラメータは、ポート固有の実装では利用できない場合があるため、0を返すことがあります。
端末のリダイレクトと複製¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
指定された stream のようなオブジェクト上で MicroPython 端末(REPL)を複製または切り替えます。stream_object 引数は、ネイティブストリームオブジェクトであるか、
io.IOBaseから派生し、readinto()メソッドとwrite()メソッドを実装している必要があります。ストリームは非ブロッキングモードである必要があり、読み取り可能なデータがない場合、readinto()はNoneを返す必要があります。この関数を呼び出すと、すべての端末出力がこのストリームでも繰り返され、ストリーム上で利用可能な入力はすべて端末入力に渡されます。
index パラメータは負でない整数である必要があり、どの複製スロットを設定するかを指定します。ポートによっては複数のスロットを実装している場合があり(スロット 0 は常に利用可能です)、その場合、端末の入出力は設定されているすべてのスロットで複製されます。
stream_object として
Noneが渡された場合、index で指定されたスロットの複製がキャンセルされます。この関数は、指定されたスロット内の以前のストリームのようなオブジェクトを返します。
- os.dupterm_notify(obj_in: Any, /) None¶
os.dupterm()を介して以前に登録されたストリームのようなオブジェクトで入力が利用可能になったことを MicroPython REPL に通知します。この関数は、カスタムストリーム実装(例: UART、Bluetooth、その他の非 USB REPL ストリーム)によって呼び出され、入力が読み取り可能になったことを REPL に知らせる必要があります。適切に使用することで、Ctrl+C(KeyboardInterrupt のトリガーに使用される)などの特殊文字が REPL によって速やかに処理されるようになり、ユーザーコードに対して期待される割り込み動作が可能になります。
obj_in パラメータは
os.dupterm_notify()によって無視されますが、UART.irq()などの割り込みハンドラから dupterm_notify を呼び出せるようにするために必要です。例:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
注釈
dupterm_notify()関数が呼び出されない場合、カスタムストリームからの入力は次の REPL ポーリングまで検出または処理されない可能性があり、KeyboardInterrupt やその他の制御信号が遅延する可能性があります。これは、自動通知が保証されない UART、Bluetooth、その他の非標準 REPL 接続では特に重要です。
ファイルシステムのマウント¶
以下の関数とクラスは vfs モジュールに移動されました。これらは後方互換性のためにのみこのモジュールで提供されており、MicroPython のバージョン 2 で削除されます。
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
ファイルシステムオブジェクト fsobj を、mount_point 文字列で指定された VFS 内の場所にマウントします。fsobj は、
mount()メソッドを持つ VFS オブジェクト、またはブロックデバイスにできます。ブロックデバイスの場合、ファイルシステムのタイプは自動的に検出されます(ファイルシステムが認識されなかった場合は例外が送出されます)。mount_point は、fsobj をルートにマウントするために'/'にすることも、ルート下のサブディレクトリにマウントするために'/<name>'にすることもできます。readonly が
Trueの場合、ファイルシステムは読み取り専用でマウントされます。マウントプロセス中に、ファイルシステムオブジェクトに対して
mount()メソッドが呼び出されます。mount_point がすでにマウントされている場合は
OSError(EPERM)を送出します。
- os.mount() List[Tuple[Any, str]]
mount()に引数を指定しない場合、アクティブなすべてのマウントポイントを表すタプルのリストを返します。返されるリストは [(fsobj, mount_point), ...] の形式を持ちます。
- os.umount(mount_point: str | Any) None¶
ファイルシステムをアンマウントします。mount_point は、マウント場所を指定する文字列、または以前にマウントされたファイルシステムオブジェクトにできます。アンマウントプロセス中に、ファイルシステムオブジェクトに対して
umount()メソッドが呼び出されます。mount_point が見つからない場合は
OSError(EINVAL)を送出します。
- class os.VfsFat(block_dev: AbstractBlockDev)¶
FAT ファイルシステム形式を使用するファイルシステムオブジェクトを作成します。FAT ファイルシステムのストレージは block_dev によって提供されます。このコンストラクタで作成されたオブジェクトは
mount()を使用してマウントできます。- static mkfs(block_dev: AbstractBlockDev) None¶
block_dev 上に FAT ファイルシステムを構築します。