בפרק זה של קורס Python 3, נלמד את הפונקציות הבסיסיות החשובות ביותר לקבצים Files I\O, שבאמצעותן נוכל להפעיל מניפולציות על קבצים
הדפסת פלט על גבי המסך
הדרך הפשוטה ביותר להדפיס פלט על גבי המסך, היא באמצעות שימוש בפונקציה ()print אשר ניתן לכתוב ביטוי אחד או יותר בתוך הסוגריים על מנת להדפיס אותם, כאשר כל ביטוי מסומן בגרשיים משני צדדיו, ופסיק מפריד בין ביטוי לביטוי. פונקציה זו הופכת את התווים שהזנו לה למחרוזת, ולאחר מכן מדפיסה לנו פלט על גבי המסך:
print ("Hello, world!", "Hello, Python!")
!Hello, world! Hello, Python
קריאת קלט מהמקלדת
על מנת לקרוא קלט מהמקלדת עלינו להשתמש בפונקציה ( )input. בתוכנית שלפניכם, תתבקשו להזין מספר. משום שמספר זה נחשב כמחרוזת, עלינו להמיר אותו למספר int, על מנת שנוכל לבצע בו פעולות אריתמטיות, ולאחר מכן בעזרת משפטי תנאי נבדוק אם המספר שהוזן הוא קטן או גדול מ-10:
x = int(input("Number:")) if x<10: print("Your number is smaller then 10"); elif x>10: print("Your number is bigger then 10"); else: print("Your number is 10");
פתיחה וסגירה של קבצים
שפת Python מספקת את כל הפונקציות הבסיסיות למניפולציה על קבצים. ניתן להפעיל את רוב המניפולציות על ידי שימוש באובייקט קובץ file.
פתיחה ( )open
לפני שאנו מתחילים לקרוא או לכתוב בקובץ, עלינו קודם לפתוח אותו באמצעות הפונקציה ( )open. פונקציה זו יוצרת אובייקט קובץ file שבו נשתמש כדי לקרוא לפונקציות ייחודיות אחרות שנתמכות על ידיו, לפי התחביר הבא:
file object = open(file_name [, access_mode][, buffering])
אלו הם פרטי הפרמטרים:
file_name – מחרוזת המכילה את שם הקובץ שברצוננו לגשת אליו
access_mode – ניתן להיכנס לקובץ במספר מצבי גישה כמו למשל read, write וכדומה. פרמטר זה הוא אופציונלי וכברירת מחדל מצב הגישה הוא read.
buffering – אם הערך הוא 0 לא מבוצע תהליך buffering, אם 1 אז מתבצע תהליך buffering בזמן פתיחת הקובץ, כאשר כל מספר שגדול מ-1 יהיה גודל ה-buffering.
ניתן לפתוח קובץ במצבים הבאים:
מצב | תיאור |
---|---|
r | פותח קובץ לקריאה בלבד, זהו מצב הברירת מחדל של פתיחת קובץ |
rb | פותח קובץ לקריאה בלבד בפורמט בינארי |
+r | פותח קובץ גם לקריאה וגם לכתיבה |
+rb | פותח קובץ גם לקריאה וגם לכתיבה בפורמט בינארי |
w | פותח קובץ לכתיבה בלבד, משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
wb | פותח קובץ בפורמט בינארי לכתיבה בלבד, משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
+w | פותח קובץ גם לכתיבה וגם לקריאה, משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
+wb | פותח קובץ בפורמט בינארי גם לכתיבה וגם לקריאה, משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
a | פותח קובץ לשם הוספה appending, ההוספה תחל מסוף הקובץ. משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
ab | פותח קובץ בפורמט בינארי לשם הוספה appending, ההוספה תחל מסוף הקובץ. משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
+a | פותח קובץ לשם הוספה appending וקריאה, ההוספה תחל מסוף הקובץ. משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
+ab | פותח קובץ בפורמט בינארי לשם הוספה appending וקריאה, ההוספה תחל מסוף הקובץ. משכתב את הקובץ אם קיים, יוצר קובץ חדש אם לא קיים |
תכונת אובייקט קובץ file
כאשר אנו פותחים קובץ, נוצר אובייקט קובץ file. ניתן לקבל מידע לגבי אובייקט זה:
- file.closed – בודק אם הקובץ סגור. מחזיר ערך אמת אם הקובץ סגור, מחזיר ערך כזב אם הקובץ פתוח.
- file.mode – מחזיר את המצב שבו הקובץ נפתח
- file.name – מחזיר את שם הקובץ
# Open a file named test.txt fileOpen = open("test.txt", "wb") print ("Name of the file: ", fileOpen.name) print ("Closed or not : ", fileOpen.closed) print ("Opening mode : ", fileOpen.mode) fo.close()
Name of the file: test.txt
Closed or not : False
Opening mode : wb
סגירה ( )close
ניתן לסגור קבצים באמצעות הפונקציה ( )close כך שלאחר מכן לא יהיה ניתן לכתוב בתוכם:
fileOpen = open("test.txt", "wb") print ("Name of the file: ", fileOpen.name) fileOpen.close()
Name of the file: test.txt
קריאה וכתיבה בקבצים
לאובייקט קובץ file יש מגוון של פונקציות ייחודיות שיכולות להקל עלינו. על מנת לקרוא ולכתוב בקבצים נשתמש בפונקציות ( )read ו-( )write.
כתיבה בקובץ ( )write
ניתן להוסיף כל מחרוזת לקובץ file, יש לציין כי מחרוזות בשפת python יכולות להכיל נתונים בינאריים.
fileOpen = open("test.txt", "w") fileOpen.write( "Hello, world!\nHello, Python!\n") fileOpen.close()
קריאה מקובץ ( )read
ניתן לקרוא כל מחרוזת מקובץ file, ויש לציין את מספר הבייטים שברצוננו לקרוא מתוך הקובץ:
fileOpen = open("test.txt", "r+") str = fileOpen.read(10) print ("String is:", str) fileOpen.close()
String is: Hello, wor
מיקומי קבצים
הפונקציה ( )tell תאמר לנו באיזה מיקום בקובץ בביטים אנו נמצאים כרגע. ניקח שוב את אותו הקובץ שיצרנו ונבדוק:
fileOpen = open("test.txt", "r+") str = fileOpen.read(10) print ("String is: ", str) position = fileOpen.tell() print ("file position: ", position) fileOpen.close()
String is: Hello, wor
position: 10
שינוי שמות ומחיקת קבצים
המודול os בשפת Python מקנה לנו גישה לפונקציות ייחודיות שנועדו לפעולות עריכת קבצים מסוג שינוי שם או מחיקה. כמובן שיש צורך לייבא את המודול בתחילת התוכנית לשם כך.
שינוי שם ( )rename
על מנת להשתמש בפונקציה ייחודית זו יש להשתמש בשני טיעונים – שם הקובץ המקורי, ושם הקובץ החדש:
import os os.rename( "test.txt", "test1.txt" )
הסרת קובץ ( )remove
ניתן להסיר קובץ על ידי שימוש בפונקציה הייחודית ( )remove, יש להזין את שם הקובץ הרצוי אל תוך הסוגריים:
import os os.remove("text56.txt")
תיקיות Directories
קבצים בדרך כלל מאורגנים בתיקיות, ולשפת Python יש את הכלים המתאימים על מנת לנהל תיקיות. למודול os יש פונקציות ייחודיות שבאמצעותן ניתן למחוק ליצור או לשנות תיקיות.
יצירת תיקייה חדשה ( )mkdir
ניתן ליצור תיקייה חדשה בתוך התיקייה שבה אנו נמצאים כעת על ידי שימוש בפונקציה הייחודית ( )mkdir. יש להזין אל תוך הסוגריים את השם המבוקש:
import os os.mkdir("test")
שינוי תיקייה ( )chdir
ניתן לשנות את התיקייה שבה אנו נמצאים על ידי שימוש בפונקציה הייחודית ( )chdir. יש להזין את שם התיקייה המבוקשת אל תוך הסוגריים.
import os os.chdir("/test/newdir")
הצגת התיקייה הנוכחית ( )getcwd
על מנת להציג את התיקייה שבה אנו נמצאים יש להשתמש בפונקציה הייחודית ( )getcwd.
import os os.getcwd()
הסרת תיקייה ( )rmdir
על מנת להסיר תיקייה יש להשתמש בפונקציה הייחודית ( )rmdir. לפני שמסירים תיקייה יש להסיר את כל התוכן שלה.
import os os.rmdir( "/tmp/test" )
למרות שכיסינו את כל הפונקציות הבסיסיות להפעלת מניפולציות על קבצים, קיימות פונקציות נוספות. לקריאה מורחבת יש כל המידע הרשמי באתר של Python.