os — שירותי ”מערכת הפעלה“ בסיסיים¶
המודול os מכיל פונקציות לגישה למערכת קבצים ולעיגונה, להפניית טרמינל ולשכפולו, ואת הפונקציות uname ו-urandom.
פונקציות כלליות¶
- os.uname() Tuple[str, str, str, str, str]¶
מחזירה tuple (יכול להיות named tuple) המכיל מידע על המכונה הבסיסית ו/או מערכת ההפעלה שלה. ל-tuple חמישה שדות בסדר הבא, כל אחד מהם מחרוזת:
sysname– שם המערכת הבסיסיתnodename– שם הרשת (יכול להיות זהה ל-sysname)release– גרסת המערכת הבסיסיתversion– גרסת MicroPython ותאריך הבנייהmachine– מזהה לחומרה הבסיסית (למשל, לוח, מעבד)
- os.urandom(n: int) bytes¶
מחזירה אובייקט bytes עם n בתים אקראיים. המקור מתאים מבחינה קריפטוגרפית בכל מצלמה נתמכת, אם כי המימוש משתנה לפי port:
מצלמות STM32 (M4, M7, H7, H7+, PT, N6) משתמשות בהתקן ה-RNG החומרתי של STM32.
מצלמות i.MX RT1062 (RT1060) משתמשות ב-TRNG החומרתי של השבב.
מצלמות Alif Ensemble (AE3) משתמשות בשירות האקראי החומרתי של ה-Secure Enclave.
Arduino Nano 33 BLE Sense משתמשת בהתקן ה-RNG החומרתי של ה-nRF52.
Arduino Nano RP2040 Connect אינה כוללת TRNG חומרתי; ה-PRNG של pico-sdk מאותחל בזרע וממוזג מחדש באופן רציף עם מקורות האנטרופיה שעל שבב ה-RP2040.
גישה למערכת קבצים¶
- os.ilistdir(dir: str | None = None) Iterator[Tuple]¶
פונקציה זו מחזירה איטרטור שלאחר מכן מניב tuples המתאימים לרשומות בספרייה שהוא מפרט. ללא ארגומנט הוא מפרט את הספרייה הנוכחית, אחרת הוא מפרט את הספרייה הנתונה ב-dir.
ל-tuples יש את הצורה (name, type, inode[, size]):
name הוא מחרוזת (או bytes אם dir הוא אובייקט bytes) והוא שם הרשומה;
type הוא מספר שלם המציין את סוג הרשומה, כאשר 0x4000 מציין ספריות ו-0x8000 מציין קבצים רגילים;
inode הוא מספר שלם המתאים ל-inode של הקובץ, ויכול להיות 0 עבור מערכות קבצים שאין להן מושג כזה.
size הוא מספר שלם שעשוי להיכלל בהתאם לסוג מערכת הקבצים. עבור רשומות קבצים, size מייצג את גודל הקובץ או -1 אם אינו ידוע. משמעותו עבור רשומות ספריות אינה מוגדרת כרגע.
- os.listdir(dir: str | None = None) List[str]¶
ללא ארגומנט, מפרטת את הספרייה הנוכחית. אחרת מפרטת את הספרייה הנתונה.
- os.statvfs(path: str) Tuple¶
קבלת מצב של מערכת קבצים.
מחזירה tuple עם מידע מערכת הקבצים בסדר הבא:
f_bsize– גודל בלוק של מערכת הקבציםf_frsize– גודל פרגמנטf_blocks– גודל מערכת הקבצים ביחידות f_frsizef_bfree– מספר הבלוקים הפנוייםf_bavail– מספר הבלוקים הפנויים למשתמשים לא מורשיםf_files– מספר ה-inodesf_ffree– מספר ה-inodes הפנוייםf_favail– מספר ה-inodes הפנויים למשתמשים לא מורשיםf_flag– דגלי עיגוןf_namemax– אורך שם הקובץ המרבי
פרמטרים הקשורים ל-inodes:
f_files,f_ffree,f_favailוהפרמטרf_flagעשויים להחזיר0משום שהם יכולים להיות לא זמינים במימוש ספציפי ל-port.
הפניית טרמינל ושכפולו¶
- os.dupterm(stream_object: Any, index: int = 0, /) Any¶
שכפול או החלפה של טרמינל MicroPython (ה-REPL) על האובייקט דמוי ה-stream הנתון. הארגומנט stream_object חייב להיות אובייקט stream מקורי, או לרשת מ-
io.IOBaseולממש את המתודותreadinto()ו-write(). ה-stream צריך להיות במצב לא-חוסם ו-readinto()צריכה להחזירNoneאם אין נתונים זמינים לקריאה.לאחר קריאה לפונקציה זו, כל פלט הטרמינל משוכפל על stream זה, וכל קלט הזמין ב-stream מועבר לקלט הטרמינל.
הפרמטר index צריך להיות מספר שלם אי-שלילי ומציין איזו משבצת שכפול מוגדרת. port נתון עשוי לממש יותר ממשבצת אחת (משבצת 0 תהיה תמיד זמינה) ובמקרה זה קלט ופלט הטרמינל משוכפלים על כל המשבצות המוגדרות.
אם
Noneמועבר כ-stream_object, השכפול מבוטל במשבצת הנתונה על ידי index.הפונקציה מחזירה את האובייקט דמוי ה-stream הקודם במשבצת הנתונה.
- os.dupterm_notify(obj_in: Any, /) None¶
הודעה ל-REPL של MicroPython שקלט זמין על אובייקט דמוי stream שנרשם קודם לכן באמצעות
os.dupterm().פונקציה זו צריכה להיקרא על ידי מימושי stream מותאמים אישית (למשל, UART, Bluetooth, או stream-ים אחרים של REPL שאינם USB) כדי ליידע את ה-REPL שקלט מוכן לקריאה. שימוש נכון מבטיח שתווים מיוחדים כגון Ctrl+C (המשמש להפעלת KeyboardInterrupt) יעובדו במהירות על ידי ה-REPL, ומאפשר התנהגות קטיעה צפויה עבור קוד המשתמש.
הפרמטר obj_in נעלם בידי
os.dupterm_notify(), אך הוא נדרש כדי לאפשר קריאה ל-dupterm_notify ממטפל פסיקה כגוןUART.irq().דוגמה:
from machine import UART import os uart = UART(0) os.dupterm(uart, 0) uart.irq(os.dupterm_notify, machine.UART.IRQ_RX)
הערה
אם הפונקציה
dupterm_notify()אינה נקראת, ייתכן שקלט מה-stream המותאם אישית לא יזוהה או יעובד עד לסקר (poll) ה-REPL הבא, דבר שעלול לעכב KeyboardInterrupt או אותות בקרה אחרים. זה חשוב במיוחד עבור UART, Bluetooth וחיבורי REPL אחרים שאינם סטנדרטיים, שבהם הודעה אוטומטית אינה מובטחת.
עיגון מערכת קבצים¶
הפונקציות והמחלקות הבאות הועברו למודול vfs. הן מסופקות במודול זה רק לצורך תאימות לאחור והן יוסרו בגרסה 2 של MicroPython.
- os.mount(fsobj: Any, mount_point: str, *, readonly: bool = False) None¶
עיגון אובייקט מערכת הקבצים fsobj במיקום ב-VFS הנתון על ידי המחרוזת mount_point. fsobj יכול להיות אובייקט VFS שיש לו מתודת
mount(), או התקן בלוקים. אם זהו התקן בלוקים, סוג מערכת הקבצים מזוהה אוטומטית (נזרקת חריגה אם לא זוהתה מערכת קבצים). mount_point יכול להיות'/'כדי לעגן את fsobj בשורש, או'/<name>'כדי לעגן אותו בתת-ספרייה תחת השורש.אם readonly הוא
True, מערכת הקבצים מעוגנת לקריאה בלבד.במהלך תהליך העיגון, המתודה
mount()נקראת על אובייקט מערכת הקבצים.תזרוק
OSError(EPERM)אם mount_point כבר מעוגן.
- os.mount() List[Tuple[Any, str]]
ללא ארגומנטים ל-
mount(), מחזירה רשימה של tuples המייצגים את כל נקודות העיגון הפעילות.לרשימה המוחזרת יש את הצורה [(fsobj, mount_point), …].
- os.umount(mount_point: str | Any) None¶
ביטול עיגון של מערכת קבצים. mount_point יכול להיות מחרוזת המציינת את מיקום העיגון, או אובייקט מערכת קבצים שעוגן קודם לכן. במהלך תהליך ביטול העיגון, המתודה
umount()נקראת על אובייקט מערכת הקבצים.תזרוק
OSError(EINVAL)אם mount_point לא נמצא.
- class os.VfsFat(block_dev: AbstractBlockDev)¶
יצירת אובייקט מערכת קבצים המשתמש בפורמט מערכת הקבצים FAT. אחסון מערכת הקבצים FAT מסופק על ידי block_dev. אובייקטים שנוצרו על ידי בנאי זה ניתנים לעיגון באמצעות
mount().- static mkfs(block_dev: AbstractBlockDev) None¶
בניית מערכת קבצים FAT על block_dev.
- class os.VfsPosix(root: str | None = None)¶
יצירת אובייקט מערכת קבצים הניגש למערכת הקבצים POSIX של המארח. אם root מצוין, הוא צריך להיות נתיב במערכת הקבצים של המארח שישמש כשורש של אובייקט ה-
VfsPosix. אחרת נעשה שימוש בספרייה הנוכחית של מערכת הקבצים של המארח.הערה
VfsPosixזמין רק ב-Unix port; הוא אינו קיים ב-OpenMV Cam.