• בלוג
  • כמה פונקציות ששווה להכיר מהמודולים os, sys

כמה פונקציות ששווה להכיר מהמודולים os, sys

18/09/2019

המודולים sys ו os מהספריה הסטנדרטית של פייתון כוללים המון פונקציות ומשתנים ואני חושב שאם אתם מתכננים להיכנס לעומק של פייתון צלילה בתיעוד שלהם היא הכרחית. עד שתעשו את זה הנה כמה פונקציות ומשתנים שאני אוהב במיוחד מתוכם.

1. שימוש בפרמטרים משורת הפקודה עם sys.argv

המנגנון הראשון ששווה לדבר עליו הוא המשתנה sys.argv, ותפקידו לעזור לנו לכתוב סקריפטים שירוצו מתוך שורת הפקודה. לפני שתתחילו לשחק עם sys.argv שווה לוודא שפייתון מותקן אצלכם בצורה טובה ואתם יכולים להפעיל סקריפטים משורת הפקודה באופן הבא:

  1. כנסו ל cmd (או בלינוקס או מק לתוכנת המסוף המתאימה).

  2. כתבו שם python --version.

  3. התוצאה צריכה לכלול מספר גירסא של פייתון ולהיראות בערך כך:

Python 3.7.0

עכשיו שזה עבד נוכל לכתוב סקריפט שבהפעלה שלו משורת הפקודה יוכל להסתכל על הפרמטרים שהעברנו בהפעלה. במילים אחרות אנחנו נפעיל את הסקריפט עם:

$ python myscript.py one two three

ואז הסקריפט יוכל להסתכל על המילים one, two ו three ולהחליט מה לעשות לפי מילים אלה.

נתחיל עם סקריפט פשוט שרק מדפיס בחזרה את המילים שהוא קיבל משורת הפקודה:

import sys

print(sys.argv)

והתוצאה כשמפעילים את השורה שכתבתי קודם תהיה:

['myscript.py', 'one', 'two', 'three']

עכשיו אפשר להשתולל עם המערך sys.argv בשביל סקריפטים יותר מקוריים, למשל הסקריפט הבא שמדפיס לכם בחזרה את המילים שנתתם לו בסדר אקראי:

import sys
import random

words = sys.argv[1:]
random.shuffle(words)
print(' '.join(words))

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

2. מידע על הסביבה

דברים נוספים שאפשר לקחת מ sys כוללים מידע על הסביבה, לדוגמא:

  1. המשתנה sys.executable יחזיר לכם את הנתיב לתוכנית python שעכשיו מריצה את הסקריפט שלכם.

  2. המשתנה sys.path יחזיר רשימה של כל התיקיות בהן פייתון מחפש מודולים.

  3. המשתנה sys.version יחזיר את גירסת הפייתון שמריצה עכשיו את הסקריפט.

3. צפיה במשתני סביבה עם os.environ

המודול os כולל הרבה יכולות הקשורות לאינטרקציה בין פייתון למערכת ההפעלה. בתור התחלה הוא יאפשר לנו לגשת למשתני הסביבה של המערכת באמצעות המשתנה os.environ. משתנה זה מתנהג כמו Dictionary ובאמצעות סוגריים מרובעים אנחנו מושכים ממנו ערך של משתנה סביבה. הנה כמה דוגמאות:

>>> import os
>>> print(os.environ['HOME'])
/Users/ynonperek

>>> print(os.environ['USER'])
ynonperek

והלולאה הבאה תדפיס בצורה יפה את כל משתני הסביבה במערכת:

import os

for name, value in os.environ.items():
    print(f"{name:30}: {value}")

4. צפיה במידע על מערכת ההפעלה עם os.uname

המשתנה os.uname יודע לספר לנו דברים על מערכת ההפעלה הנוכחית כדי שנוכל לכתוב תוכניות שמתנהגות אחרת לפי הסביבה בה הן רצות:

>>> os.uname().sysname
'Darwin'

>>> os.uname().version
'Darwin Kernel Version 18.7.0: Thu Jun 20 18:42:21 PDT 2019; root:xnu-4903.270.47~4/RELEASE_X86_64'