os --- 基本的な「オペレーティングシステム」サービス

os モジュールには、ファイルシステムアクセスとマウント、端末のリダイレクトと複製、および unameurandom の関数が含まれています。

一般的な関数

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.chdir(path: str) None

カレントディレクトリを変更します。

os.getcwd() str

カレントディレクトリを取得します。

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.mkdir(path: str) None

新しいディレクトリを作成します。

os.remove(path: str) None

ファイルを削除します。

ファイルを削除します。これは remove() のエイリアスです。

os.rmdir(path: str) None

ディレクトリを削除します。

os.rename(old_path: str, new_path: str) None

ファイルの名前を変更します。

os.stat(path: str) Tuple

ファイルまたはディレクトリのステータスを取得します。

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_filesf_ffreef_favail、および f_flag パラメータは、ポート固有の実装では利用できない場合があるため、0 を返すことがあります。

os.sync() None

すべてのファイルシステムを同期します。

os.sep: str

ファイルシステムで使用されるパスコンポーネント区切り文字、文字列 '/' です。

端末のリダイレクトと複製

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>' にすることもできます。

readonlyTrue の場合、ファイルシステムは読み取り専用でマウントされます。

マウントプロセス中に、ファイルシステムオブジェクトに対して 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 ファイルシステムを構築します。

class os.VfsPosix(root: str | None = None)

ホストの POSIX ファイルシステムにアクセスするファイルシステムオブジェクトを作成します。root が指定されている場合、それは VfsPosix オブジェクトのルートとして使用するホストファイルシステム内のパスである必要があります。それ以外の場合は、ホストファイルシステムのカレントディレクトリが使用されます。

注釈

VfsPosix は Unix ポートでのみ利用可能です。OpenMV Cam には存在しません。