os --- layanan "sistem operasi" dasar

Modul os berisi fungsi-fungsi untuk akses dan pemasangan filesystem, pengalihan dan duplikasi terminal, serta fungsi uname dan urandom.

Fungsi umum

os.uname() Tuple[str, str, str, str, str]

Mengembalikan tuple (mungkin named tuple) yang berisi informasi tentang mesin dasar dan/atau sistem operasinya. Tuple memiliki lima bidang dalam urutan berikut, masing-masing berupa string:

  • sysname -- Nama sistem dasar

  • nodename -- Nama jaringan (dapat sama dengan sysname)

  • release -- Versi sistem dasar

  • version -- Versi MicroPython dan tanggal build

  • machine -- Pengenal untuk perangkat keras dasar (misalnya board, CPU)

os.urandom(n: int) bytes

Mengembalikan objek bytes dengan n byte acak. Sumbernya secara kriptografis sesuai pada setiap kamera yang didukung, meskipun implementasinya bervariasi menurut port:

  • Kamera STM32 (M4, M7, H7, H7+, PT, N6) menggunakan periferal RNG perangkat keras STM32.

  • Kamera i.MX RT1062 (RT1060) menggunakan TRNG perangkat keras chip.

  • Kamera Alif Ensemble (AE3) menggunakan layanan acak perangkat keras Secure Enclave.

  • Arduino Nano 33 BLE Sense menggunakan periferal RNG perangkat keras nRF52.

  • Arduino Nano RP2040 Connect tidak memiliki TRNG perangkat keras; PRNG pico-sdk di-seed dan terus-menerus dicampur ulang dengan sumber entropi on-chip RP2040.

Akses filesystem

os.chdir(path: str) None

Mengubah direktori saat ini.

os.getcwd() str

Mendapatkan direktori saat ini.

os.ilistdir(dir: str | None = None) Iterator[Tuple]

Fungsi ini mengembalikan iterator yang kemudian menghasilkan tuple yang sesuai dengan entri dalam direktori yang tercantum. Tanpa argumen, ia mencantumkan direktori saat ini, jika tidak, ia mencantumkan direktori yang diberikan oleh dir.

Tuple memiliki bentuk (name, type, inode[, size]):

  • name adalah string (atau bytes jika dir adalah objek bytes) dan merupakan nama entri;

  • type adalah bilangan bulat yang menentukan jenis entri, dengan 0x4000 untuk direktori dan 0x8000 untuk file biasa;

  • inode adalah bilangan bulat yang sesuai dengan inode file, dan mungkin 0 untuk filesystem yang tidak memiliki konsep tersebut.

  • size adalah bilangan bulat yang mungkin disertakan tergantung pada jenis filesystem. Untuk entri file, size mewakili ukuran file atau -1 jika tidak diketahui. Maknanya saat ini tidak ditentukan untuk entri direktori.

os.listdir(dir: str | None = None) List[str]

Tanpa argumen, mencantumkan direktori saat ini. Jika tidak, mencantumkan direktori yang diberikan.

os.mkdir(path: str) None

Membuat direktori baru.

os.remove(path: str) None

Menghapus file.

Menghapus file. Ini adalah alias untuk remove().

os.rmdir(path: str) None

Menghapus direktori.

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

Mengganti nama file.

os.stat(path: str) Tuple

Mendapatkan status file atau direktori.

os.statvfs(path: str) Tuple

Mendapatkan status filesystem.

Mengembalikan tuple dengan informasi filesystem dalam urutan berikut:

  • f_bsize -- Ukuran blok sistem file

  • f_frsize -- Ukuran fragmen

  • f_blocks -- Ukuran fs dalam satuan f_frsize

  • f_bfree -- Jumlah blok bebas

  • f_bavail -- Jumlah blok bebas untuk pengguna tanpa hak istimewa

  • f_files -- Jumlah inode

  • f_ffree -- Jumlah inode bebas

  • f_favail -- Jumlah inode bebas untuk pengguna tanpa hak istimewa

  • f_flag -- Flag mount

  • f_namemax -- Panjang nama file maksimum

Parameter yang terkait dengan inode: f_files, f_ffree, f_favail dan parameter f_flag mungkin mengembalikan 0 karena mungkin tidak tersedia dalam implementasi spesifik port.

os.sync() None

Menyinkronkan semua filesystem.

os.sep: str

Pemisah komponen jalur yang digunakan oleh filesystem, string '/'.

Pengalihan dan duplikasi terminal

os.dupterm(stream_object: Any, index: int = 0, /) Any

Menduplikasi atau mengalihkan terminal MicroPython (REPL) pada objek seperti stream yang diberikan. Argumen stream_object harus berupa objek stream native, atau turunan dari io.IOBase dan mengimplementasikan metode readinto() dan write(). Stream harus dalam mode non-blocking dan readinto() harus mengembalikan None jika tidak ada data yang tersedia untuk dibaca.

Setelah memanggil fungsi ini, semua output terminal diulangi pada stream ini, dan input yang tersedia pada stream diteruskan ke input terminal.

Parameter index harus berupa bilangan bulat non-negatif dan menentukan slot duplikasi mana yang ditetapkan. Port tertentu dapat mengimplementasikan lebih dari satu slot (slot 0 akan selalu tersedia) dan dalam kasus tersebut input dan output terminal diduplikasi pada semua slot yang ditetapkan.

Jika None dilewatkan sebagai stream_object maka duplikasi dibatalkan pada slot yang diberikan oleh index.

Fungsi mengembalikan objek seperti stream sebelumnya di slot yang diberikan.

os.dupterm_notify(obj_in: Any, /) None

Memberi tahu REPL MicroPython bahwa input tersedia pada objek seperti stream yang sebelumnya didaftarkan melalui os.dupterm().

Fungsi ini harus dipanggil oleh implementasi stream kustom (misalnya, UART, Bluetooth, atau stream REPL non-USB lainnya) untuk memberi tahu REPL bahwa input siap dibaca. Penggunaan yang tepat memastikan bahwa karakter khusus seperti Ctrl+C (digunakan untuk memicu KeyboardInterrupt) diproses segera oleh REPL, memungkinkan perilaku interupsi yang diharapkan untuk kode pengguna.

Parameter obj_in diabaikan oleh os.dupterm_notify(), tetapi diperlukan untuk mengizinkan pemanggilan dupterm_notify dari penangan interupsi seperti UART.irq().

Contoh:

from machine import UART
import os
uart = UART(0)
os.dupterm(uart, 0)
uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)

Catatan

Jika fungsi dupterm_notify() tidak dipanggil, input dari stream kustom mungkin tidak terdeteksi atau diproses hingga polling REPL berikutnya, yang berpotensi menunda KeyboardInterrupt atau sinyal kontrol lainnya. Ini sangat penting untuk UART, Bluetooth, dan koneksi REPL non-standar lainnya, di mana notifikasi otomatis tidak dijamin.

Pemasangan filesystem

Fungsi dan kelas berikut telah dipindahkan ke modul vfs. Mereka disediakan dalam modul ini hanya untuk kompatibilitas mundur dan akan dihapus di versi 2 MicroPython.

os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None

Memasang objek filesystem fsobj di lokasi dalam VFS yang diberikan oleh string mount_point. fsobj dapat berupa objek VFS yang memiliki metode mount(), atau perangkat blok. Jika itu adalah perangkat blok maka jenis filesystem secara otomatis terdeteksi (pengecualian dilempar jika tidak ada filesystem yang dikenali). mount_point mungkin '/' untuk memasang fsobj di root, atau '/<name>' untuk memasangnya di subdirektori di bawah root.

Jika readonly adalah True maka filesystem dipasang hanya-baca.

Selama proses pemasangan, metode mount() dipanggil pada objek filesystem.

Akan melempar OSError(EPERM) jika mount_point sudah dipasang.

os.mount() List[Tuple[Any, str]]

Tanpa argumen untuk mount(), mengembalikan daftar tuple yang mewakili semua mount point aktif.

Daftar yang dikembalikan memiliki bentuk [(fsobj, mount_point), ...].

os.umount(mount_point: str | Any) None

Melepas filesystem. mount_point dapat berupa string yang menamai lokasi mount, atau objek filesystem yang sebelumnya dipasang. Selama proses pelepasan, metode umount() dipanggil pada objek filesystem.

Akan melempar OSError(EINVAL) jika mount_point tidak ditemukan.

class os.VfsFat(block_dev: AbstractBlockDev)

Membuat objek filesystem yang menggunakan format filesystem FAT. Penyimpanan filesystem FAT disediakan oleh block_dev. Objek yang dibuat oleh konstruktor ini dapat dipasang menggunakan mount().

static mkfs(block_dev: AbstractBlockDev) None

Membangun filesystem FAT pada block_dev.

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

Membuat objek filesystem yang mengakses filesystem POSIX host. Jika root ditentukan maka harus berupa jalur dalam filesystem host yang digunakan sebagai root objek VfsPosix. Jika tidak, direktori saat ini dari filesystem host digunakan.

Catatan

VfsPosix hanya tersedia pada port Unix; tidak ada di OpenMV Cam.