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ı (sysnameile aynı olabilir)release– Temel sistemin sürümüversion– MicroPython sürümü ve derleme tarihimachine– 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.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.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 boyutuf_frsize– Parça boyutuf_blocks– f_frsize birimleri cinsinden dosya sisteminin boyutuf_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_favailvef_flagparametresi, porta özgü bir uygulamada kullanılamayabilecekleri için0döndürebilir.
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.IOBasesınıfından türetilmeli vereadinto()ilewrite()yöntemlerini uygulamalıdır. Akış, engellemesiz modda olmalı ve okunabilecek veri yoksareadinto()Nonedö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
Noneaktarı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’ınUART.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
Trueise 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,
VfsPosixnesnesinin 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
VfsPosixyalnızca Unix portunda kullanılabilir; OpenMV Cam’de mevcut değildir.