os — temel “işletim sistemi” servisleri

os modülü, dosya sistemi erişimi ve bağlama, terminal yönlendirme ve çoğaltma ile uname ve urandom fonksiyonları için fonksiyonlar içerir.

Genel fonksiyonlar

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

Temel makine ve/veya işletim sistemi hakkında bilgi içeren bir demet (muhtemelen adlandırılmış bir demet) döndürür. Demetin aşağıdaki sırayla beş alanı vardır ve her biri bir dizedir:

  • sysname – Temel sistemin adı

  • nodename – Ağ adı (sysname ile aynı olabilir)

  • release – Temel sistemin sürümü

  • version – MicroPython sürümü ve derleme tarihi

  • machine – Temel donanım için bir tanımlayıcı (ör. kart, CPU)

os.urandom(n: int) bytes

n rastgele bayt içeren bir bytes nesnesi döndürür. Kaynak, desteklenen her kamerada kriptografik olarak uygundur, ancak uygulama porta göre değişir:

  • STM32 kameralar (M4, M7, H7, H7+, PT, N6) STM32 donanım RNG çevre birimini kullanır.

  • i.MX RT1062 kameralar (RT1060) yongaların donanım TRNG’sini kullanır.

  • Alif Ensemble kameralar (AE3) Secure Enclave’in donanım rastgele servisini kullanır.

  • Arduino Nano 33 BLE Sense nRF52 donanım RNG çevre birimini kullanır.

  • Arduino Nano RP2040 Connect donanım TRNG’sine sahip değildir; pico-sdk PRNG, RP2040’ın yonga üzerindeki entropi kaynaklarıyla tohumlanır ve sürekli olarak yeniden karıştırılır.

Dosya sistemi erişimi

os.chdir(path: str) None

Geçerli dizini değiştirir.

os.getcwd() str

Geçerli dizini alır.

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

Bu fonksiyon, listelediği dizindeki girişlere karşılık gelen demetleri üreten bir yineleyici döndürür. Argüman verilmezse geçerli dizini, aksi takdirde dir tarafından verilen dizini listeler.

Demetler (name, type, inode[, size]) biçimindedir:

  • name bir dizedir (veya dir bir bytes nesnesiyse bytes) ve girişin adıdır;

  • type, girişin türünü belirten bir tamsayıdır; dizinler için 0x4000 ve normal dosyalar için 0x8000 olur;

  • inode, dosyanın inode’una karşılık gelen bir tamsayıdır ve böyle bir kavramı olmayan dosya sistemleri için 0 olabilir.

  • size, dosya sistemi türüne bağlı olarak dahil edilebilen bir tamsayıdır. Dosya girişleri için size, dosyanın boyutunu veya bilinmiyorsa -1’i temsil eder. Dizin girişleri için anlamı şu anda tanımsızdır.

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

Argüman verilmezse geçerli dizini listeler. Aksi takdirde verilen dizini listeler.

os.mkdir(path: str) None

Yeni bir dizin oluşturur.

os.remove(path: str) None

Bir dosyayı kaldırır.

Bir dosyayı kaldırır. Bu, remove() için bir takma addır.

os.rmdir(path: str) None

Bir dizini kaldırır.

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

Bir dosyayı yeniden adlandırır.

os.stat(path: str) Tuple

Bir dosyanın veya dizinin durumunu alır.

os.statvfs(path: str) Tuple

Bir dosya sisteminin durumunu alır.

Dosya sistemi bilgilerini aşağıdaki sırayla içeren bir demet döndürür:

  • f_bsize – Dosya sistemi blok boyutu

  • f_frsize – Parça boyutu

  • f_blocks – f_frsize birimleri cinsinden dosya sisteminin boyutu

  • f_bfree – Boş blok sayısı

  • f_bavail – Ayrıcalıksız kullanıcılar için boş blok sayısı

  • f_files – inode sayısı

  • f_ffree – Boş inode sayısı

  • f_favail – Ayrıcalıksız kullanıcılar için boş inode sayısı

  • f_flag – Bağlama bayrakları

  • f_namemax – Maksimum dosya adı uzunluğu

inode’larla ilgili parametreler: f_files, f_ffree, f_favail ve f_flag parametresi, porta özgü bir uygulamada kullanılamayabilecekleri için 0 döndürebilir.

os.sync() None

Tüm dosya sistemlerini eşitler.

os.sep: str

Dosya sistemi tarafından kullanılan yol bileşeni ayırıcısı, '/' dizesi.

Terminal yönlendirme ve çoğaltma

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

MicroPython terminalini (REPL) verilen stream benzeri nesne üzerinde çoğaltır veya değiştirir. stream_object argümanı, yerel bir akış nesnesi olmalı veya io.IOBase sınıfından türetilmeli ve readinto() ile write() yöntemlerini uygulamalıdır. Akış, engellemesiz modda olmalı ve okunabilecek veri yoksa readinto() None döndürmelidir.

Bu fonksiyon çağrıldıktan sonra tüm terminal çıktısı bu akışta tekrarlanır ve akışta mevcut olan herhangi bir girdi terminal girişine aktarılır.

index parametresi negatif olmayan bir tamsayı olmalı ve hangi çoğaltma yuvasının ayarlandığını belirtir. Belirli bir port birden fazla yuva uygulayabilir (yuva 0 her zaman mevcut olacaktır) ve bu durumda terminal girişi ve çıkışı, ayarlanmış tüm yuvalarda çoğaltılır.

stream_object olarak None aktarılırsa, index tarafından verilen yuvada çoğaltma iptal edilir.

Fonksiyon, verilen yuvadaki önceki akış benzeri nesneyi döndürür.

os.dupterm_notify(obj_in: Any, /) None

MicroPython REPL’e, daha önce os.dupterm() aracılığıyla kaydedilmiş bir akış benzeri nesnede girdi olduğunu bildirir.

Bu fonksiyon, girdinin okunmaya hazır olduğunu REPL’e bildirmek için özel akış uygulamaları (ör. UART, Bluetooth veya diğer USB olmayan REPL akışları) tarafından çağrılmalıdır. Doğru kullanım, Ctrl+C (KeyboardInterrupt’i tetiklemek için kullanılır) gibi özel karakterlerin REPL tarafından derhal işlenmesini sağlayarak kullanıcı kodu için beklenen kesme davranışını mümkün kılar.

obj_in parametresi os.dupterm_notify() tarafından yok sayılır, ancak dupterm_notify’ın UART.irq() gibi bir kesme işleyicisinden çağrılmasına izin vermek için gereklidir.

Örnek:

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

Not

dupterm_notify() fonksiyonu çağrılmazsa, özel akıştan gelen girdi bir sonraki REPL yoklamasına kadar algılanmayabilir veya işlenmeyebilir; bu da KeyboardInterrupt’ları veya diğer kontrol sinyallerini geciktirebilir. Bu, otomatik bildirimin garanti edilmediği UART, Bluetooth ve diğer standart olmayan REPL bağlantıları için özellikle önemlidir.

Dosya sistemi bağlama

Aşağıdaki fonksiyonlar ve sınıflar vfs modülüne taşınmıştır. Bu modülde yalnızca geriye dönük uyumluluk için sağlanmıştır ve MicroPython’un 2. sürümünde kaldırılacaktır.

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

fsobj dosya sistemi nesnesini, mount_point dizesi tarafından VFS içinde verilen konumda bağlar. fsobj, mount() yöntemi olan bir VFS nesnesi veya bir blok aygıtı olabilir. Bir blok aygıtıysa, dosya sistemi türü otomatik olarak algılanır (hiçbir dosya sistemi tanınmazsa bir istisna yükseltilir). mount_point, fsobj‘yi köke bağlamak için '/' veya kök altındaki bir alt dizine bağlamak için '/<name>' olabilir.

readonly True ise dosya sistemi salt okunur olarak bağlanır.

Bağlama işlemi sırasında dosya sistemi nesnesinde mount() yöntemi çağrılır.

mount_point zaten bağlıysa OSError(EPERM) yükseltir.

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

mount() fonksiyonuna argüman verilmezse, tüm etkin bağlama noktalarını temsil eden bir demet listesi döndürür.

Döndürülen liste [(fsobj, mount_point), …] biçimindedir.

os.umount(mount_point: str | Any) None

Bir dosya sistemini ayırır. mount_point, bağlama konumunu adlandıran bir dize veya önceden bağlanmış bir dosya sistemi nesnesi olabilir. Ayırma işlemi sırasında dosya sistemi nesnesinde umount() yöntemi çağrılır.

mount_point bulunamazsa OSError(EINVAL) yükseltir.

class os.VfsFat(block_dev: AbstractBlockDev)

FAT dosya sistemi biçimini kullanan bir dosya sistemi nesnesi oluşturur. FAT dosya sisteminin depolaması block_dev tarafından sağlanır. Bu kurucu tarafından oluşturulan nesneler mount() kullanılarak bağlanabilir.

static mkfs(block_dev: AbstractBlockDev) None

block_dev üzerinde bir FAT dosya sistemi oluşturur.

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

Ana POSIX dosya sistemine erişen bir dosya sistemi nesnesi oluşturur. root belirtilirse, VfsPosix nesnesinin kökü olarak kullanılacak ana dosya sistemindeki bir yol olmalıdır. Aksi takdirde ana dosya sisteminin geçerli dizini kullanılır.

Not

VfsPosix yalnızca Unix portunda kullanılabilir; OpenMV Cam’de mevcut değildir.