פייתון/קבצי אצווה

מתוך ויקיספר, אוסף ספרי הלימוד והמדריכים החופשי.

קפיצה אל: ניווט, חיפוש



Baustelle.svg הדף נמצא בשלבי עבודה
דף זה נמצא כעת בשלבי עריכה. הנכם מתבקשים שלא לערוך אותו בטרם תוסר הודעה זו.
במקרה שדף זה לא נערך במשך שבוע או יותר, רשאי כל משתמש להסיר הודעה זו.

קובץ אצווה הוא קובץ המכיל סדרת פקודות למערכת ההפעלה. אפשר להשתמש בקבצי אצווה, לדוגמה, למטלות תחזוק-מערכת שונות, לדוגמה ניהול גרסאות או גיבוי. פייתון, כשפת דבק, מתאימה במיוחד לכתיבת קבצי אצווה מתוחכמים (ראו לדוגמה את התוכנה החופשית mercurial לניהול גרסאות).

תוכן עניינים

[עריכה] דוגמה רצה

נרצה לכתוב תוכנית add.py המקבלת שני מספרים, ומדפיסה את סכומם. בחלון הפקודות, המשתמש יוכל להשתמש בה כך:

add.py 2 3
5
 
add.py 1 1
2

[עריכה] הבעיות שאותן נפתור

בכתיבת קובץ אצווה יש שתי בעיות מיוחדות שאינן קיימות לרוב בתוכניות רגילות. נעבור עליהן כאן.

[עריכה] הפעלה כפקודת מערכת

כדי להעתיק קובץ בשם foo לקובץ בשם bar, אפשר לפתוח חלון פקודות, ולכתוב פקודה מתאימה. במערכת לינוקס, לדוגמה, אפשר לכתוב:

cp foo bar

ובמערכת חלונות אפשר לכתוב

copy foo bar


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

python add.py 2 3
5

כלומר, המשתמשים מבקשים ממערכת ההפעלה להריץ את python על הקובץ add.py. בכתיבת קובץ אצווה, עם זאת, נרצה שיהיה אפשר לכתוב כך:

add.py 2 3
5

כלומר, המשתמשים מבקשים ממערכת ההפעלה להריץ את קובץ האצווה add.py שרק במקרה כתוב בפייתון. איננו רוצים להכריח את המשתמשים להריץ במודע את python, או אפילו לדעת מה השפה בה נכתב קובץ האצווה. למעשה, יכולנו לקרוא לקובץ האצווה add, ולהריצו כך:

add 2 3
5

[עריכה] העברת פרמטרים לתוכנית

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

לדוגמה, כאשר כותבים

cp foo bar

או

copy foo bar

אז foo וbar מועברות לתוכנית.

באותו אופן, כאשר כותבים

add.py 2 3
5

אז יש להעביר את 2 ו3 לתוכנית. בפרק זה נראה כיצד פייתון מאפשרת זאת.

[עריכה] החזרת סטטוס למערכת ההפעלה

[עריכה] שבנג!

#!/usr/bin/env python

[עריכה] מציאת מספר הפרמטרים

המשתנה sys.argc מתאר את מספר הפרמטרים שהעביר המשתמש ועוד אחת (מסיבות היסטוריות, גם שם התוכנית נחשבת פרמטר). כך, לדוגמה, אם המשתמש הקליד

add.py 2 3

אז sys.argc הוא 3.

נתחיל בבדיקה שקיבלנו את מספר המשתנים הנכון:

#!/usr/bin/env python
 
import sys
 
def usage():
	print 'usage: add.py <num1> <num2>
 
if sys.argc != 3
	usage()
	sys.exit(-1)

הפונקציה usage מדפיסה את צורת השימוש הנכונה בפונקציה. לאחר שבונים אותה, בודקים אם מספר הפרמטרים תקין. אם לא, קוראים לפוקנציה, ולאחר מכן יוצאים מהתוכנית. השורה

	sys.exit(-1)

מסיימת את התוכנית, ומודיעה למערכת ההפעלה שארעה בעיה (במקרה זה, ניסיון להשתמש בתוכנית שלא כתכנונה). לא נתעמק בכך כעת.


[עריכה] גישה לפרמרטרים

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

add.py 2 3

אז sys.argv הנו הרשימה:

['add.py', '2', '3']

כפי שראינו, נצטרך להמיר את המחרוזות - לדוגמה נצטרך להמיר את המחרוזת '2' למספר 2. נעשה זאת כך

num1 = float(sys.argv[1])
num2 = float(sys.argv[2])

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

print num1 + num2

להלן קובץ האצווה עד כה.

#!/usr/bin/env python
 
import sys
 
def usage():
	print 'usage: add.py <num1> <num2>
 
if sys.argc != 3
	usage()
	sys.exit(-1)	
 
num1 = float(sys.argv[1])
num2 = float(sys.argv[2])
 
print num1 + num2

[עריכה] טיפול בקלטים שגויים

#!/usr/bin/env python
 
import sys
 
def usage():
	print 'usage: add.py <num1> <num2>
 
if sys.argc != 3
	usage()
	sys.exit(-1)	
 
try:
	num1 = float(sys.argv[1])
	num2 = float(sys.argv[2])
except:
	usage()
	sys.exit(-1)
 
print num1 + num2


[עריכה] ראו גם


הפרק הקודם:
מודולים
קבצי אצווה הפרק הבא:
הספריה הסטנדרטית