מודול os של פייתון

פייתון מספקת מודול למערכת ההפעלה שמספק פונקציות פשוטות שמאפשרות לנו להתקשר ולקבל מידע על מערכת ההפעלה ואף לשלוט בתהליכים עד גבול מסוים.

מודול מערכת ההפעלה של פייתון

הפונקציות של מודול מערכת ההפעלה מאפשרות לנו לבצע מטלות בסיסיות במערכת ההפעלה, לא תלוי אם היא מערכת הפעלה 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