פייתון מספקת מודול למערכת ההפעלה שמספק פונקציות פשוטות שמאפשרות לנו להתקשר ולקבל מידע על מערכת ההפעלה ואף לשלוט בתהליכים עד גבול מסוים.
מודול מערכת ההפעלה של פייתון
הפונקציות של מודול מערכת ההפעלה מאפשרות לנו לבצע מטלות בסיסיות במערכת ההפעלה, לא תלוי אם היא מערכת הפעלה Windows, Macintosh או Linux. בשיעור זה, נבחן את הפונקציות הללו ואת הפעולות שאנו יכולים לבצע עם הן. בואו נתחיל את המסע שלנו עם הפונקציות והמידע שהן מספקות.
ייבאו את מודול ה-OS בפייתון
שימו לב שבראש ובראשונה עלינו לייבא את מודול ה-OS לתוך התוכנית שלנו, רק אז נוכל להפעיל כל אחת מהפונקציות שלו.
os.name
הפונקציה הזו נותנת את שם מודול ה-MׁOS שהיא מייבאת. זה שונה בהתאם למערכת ההפעלה התחתית. כרגע, הוא רשום 'posix', 'os2', 'ce', 'nt', 'riscos' ו-'java'. בואו נפעיל את זה על המערכת:
>>> print(os.name)
posix
ברור שזה יכול לפלוט פלט שונה בהתאם למפרש.
os.environ
environ
אינו פונקציה אלא פרמטר תהליך באמצעותו אנו יכולים לגשת למשתני הסביבה של המערכת. בוא נראה קטע קוד מדוגם:
import os
output = os.environ['HOME']
print(output)
כאשר אנו מריצים את סקריפט זה, הפלט הבא יהיה: אנו יכולים להשתמש בזה כדי לעבוד עם משתני הסביבה, קראו עוד ב־הגדרת משתנה סביבה בפייתון.
os.execvp
execvp
הוא אחד מהדרכים להריץ פקודות אחרות במערכת. בוא נראה קטע קוד מדוגם עבור פונקציה זו:
import os
program = "python"
arguments = ["hello.py"]
print(os.execvp(program, (program,) + tuple(arguments)))
עבור זה, פשוט יצרנו סקריפט מדוגם בשם hello.py
עם הקוד הבא:
print('Hello')
כאשר אנו מפעילים סקריפט זה, הפלט הבא יהיה:
os.getuid
פונקציית המודול os מחזירה את מזהה המשתמש או UID של התהליך הנוכחי, כפי שהוא נפוץ.
>>> os.getuid()
501
לכן, זיהוי התהליך של המפתח הנוכחי הוא 501.
os.rename
עם פונקציית השינוי של os בפייתון, אנו יכולים לשנות שם של קובץ בקלות.
import os
fileDir = "JournalDev.txt"
os.rename(fd,'JournalDev_Hi.txt')
שימו לב כי לכך, עלינו לספק הרשאות נכונות לסקריפט שלנו.
os.system
פונקציית המערכת os בפייתון מאפשרת לנו להריץ פקודה בסקריפט פייתון, בדיוק כמו שאני מריץ אותה בשלי. לדוגמה:
import os
currentFiles = os.system("users > users.txt")
כאשר הרצתי סקריפט זה, נוצר קובץ חדש באותו התיקייה בשם users.txt עם תוכן מחרוזת 'shubham', כפי שהוא מוחזר גם על ידי השל המקורי: שימו לב כי זאת פקודה עוצמתית מאוד ועליה להשתמש בזהירות.
שגיאת os
קטגוריה שגיאה במודול ה-OS של פייתון היא המחלקה הבסיסית לשגיאות הקשורות לקלט/פלט. לכן, ניתן ללכוד שגיאות קלט/פלט באמצעות OSError בתוך קטע הקוד בלבד.
import os
try:
f = open('abc.txt', 'r') # file is missing
except OSError:
print('Error')
os.getpid
פונקציה זו מחזירה את מזהה התהליך הנוכחי או PID, כפי שהוא ידוע בצוברים.
>>> os.getpid()
71622
לכן, זיהוי המזהה המשתמש של תהליך השול שנוכח כעת הוא 71622.
os.listdir
פונקציה זו רק מפרטת את הקבצים והתיקיות הקיימים בתיקייה הנוכחית שבה אנו עובדים.
>>> import os
>>> os.listdir()
['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']
היא מחזירה רשימה ניתנת להתאמה של שמות תיקיות וקבצים.
os.uname
פונקציה זו מחזירה מידע המזהה את מערכת ההפעלה הנוכחית עליה מתבצע הרץ.
>>> os.uname()
posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
הסבר די מפורט, בעצם.
הבאת os.path נגד הבאת os
os.path
בעצם עובד בצורה מוזרה. זה נראה כאילו os
מגובה עם תת־מודול path
אבל למעשה, os
הוא מודול רגיל שעובד עם sys.module
כדי לתמוך ב־os.path
. בוא נרשום מה קורה מאחורי הקלעים:
- כאשר Python מתחיל, הוא טוען הרבה מודולים לתוך
sys.module
. - גם מודול
os
נטען כאשר Python מתחיל. הוא משייך את ה־path
שלו למאפיין המודול הספציפי שלos
. - הוא מכניס
sys.modules['os.path'] = path
כך שתוכל לבצעimport os.path
כאילו זה היה תת־מודול.
סיכום
בשיעור זה, קראנו על פונקציות שונות הנספקות על ידי מודול OS ב־Python וראינו איך הן עובדות. ראה עוד שיעורים על Python כאן. הפניה: מסמך API
Source:
https://www.digitalocean.com/community/tutorials/python-os-module