PracticU

קבצים - files

בלי כתוביותעם כתוביות
PracticU › קורס פייתון - Python › קבצים - files
מילון מושגים:
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.

קבצים - files
בשיעור נלמד לעבוד עם קבצים ותיקיות בפייתון, בעזרת המודולים os ו-shutil: מעבר על תיקיות, בניית נתיבים, יצירה, קריאה, מחיקה, העתקה ושינוי שם.
השלבים העיקריים
1. מעבר על תיקיות: os.walk מחזיר בכל פעם את התיקייה הנוכחית, רשימת התיקיות שבתוכה ורשימת הקבצים שבתוכה. הפונקציה רקורסיבית ועוברת על כל עץ התיקיות.
2. בניית נתיב: os.path.join מחבר חלקים של נתיב בעזרת המפריד הנכון למערכת ההפעלה, סלאש בלינוקס ולוכסן אחורי ב-Windows.
3. חיפוש בתוך קבצים: פותחים כל קובץ עם open ובודקים אם מופיעה בו מילה מסוימת. אפשר גם לבדוק רק את שם הקובץ, בלי לפתוח אותו.
4. יצירת תיקייה: os.mkdir יוצרת תיקייה אחת בלבד. os.makedirs יוצרת גם את התיקיות שמעליה.
5. יצירת קובץ: פותחים קובץ במצב w (כתיבה), או a כדי להוסיף לסוף. ברירת המחדל היא קריאה בלבד.
6. מחיקה: os.remove מוחק קובץ. למחיקת תיקייה עם כל התוכן שלה משתמשים ב-shutil.rmtree.
7. שינוי שם והעתקה: os.rename משנה שם, ו-shutil.copyfile מעתיק קובץ. shutil.copytree מעתיק תיקייה שלמה.
8. נתיב יחסי: os.path.dirname מחזיר את התיקייה שמעל, ו-os.path.basename מחזיר את שם הקובץ האחרון בנתיב.
9. בדיקות: os.path.exists בודק אם הנתיב קיים, os.path.isfile בודק אם הוא קובץ, ו-os.path.getsize מחזיר את הגודל בבייטים.
טעויות נפוצות
- בנתיב Windows יש לכתוב מחרוזת עם r לפניה, כמו r"C:\...", כדי ש-\n או \t לא ייחשבו לתווים מיוחדים.
- לתפוס שגיאה ב-try ולא לעשות כלום מסתיר את הבעיה. עדיף לבדוק קודם עם os.path.exists.
- לפתוח קובץ במצב w מוחק את התוכן הקיים שלו.
שימו לב
המחשב עושה בדיוק מה שמבקשים ממנו, ולכן כדאי לחשוב קודם מה רוצים לעשות ואז לכתוב את הפקודה.
השיעור הבא בקורס: generators

פרקי ההרצאה: קבצים - files

  1. 00:00

    מודול os: מעבר על הקבצים בתיקייה

  2. 00:57

    os.walk: מעבר רקורסיבי על תיקיות

  3. 02:15

    חיפוש מילה בתוכן הקבצים

  4. 04:12

    בניית נתיב קובץ עם os.path.join

  5. 05:46

    פתיחת קבצים עם with open

  6. 08:51

    חיפוש קבצים לפי שם הקובץ

  7. 10:03

    יצירת תיקייה ונתיבי Windows עם r

  8. 12:30

    כתיבה וקריאה של קובץ חדש

תמלול ההרצאה: קבצים - files

הטקסט המלא של הדקות הראשונות בהרצאה «קבצים - files» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

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

  2. 00:31

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

  3. 00:49

    התיקייה שאנחנו רוצים לעבור עליה במחשב הזה היא התיקייה של פייתון, פייתון 27, היא גם אמורה להיות מותקנת אצלכם במחשבים. הפונקציה שאנחנו נשתמש בה בתור התחלה היא פונקציה שנקראת OSWalk.

  4. 01:03

    הפונקציה OSWalk היא פונקציה רקורסיבית היא מקבלת תיקי התחלה ומה שהיא עושה היא מחזירה לנו כל פעם את התיקייה הנוכחית שבה אנחנו נמצאים את רשימת התיקיות בתוך התיקייה הזאת ואת רשימת הקבצים בתוך התיקייה הזאת כלומר אם אני אפתח פה את התיקייה אז הדבר הראשון שאנחנו נקבל בסאבדיר זה פייתון 27 אחרי זה את כל התיקיות האלה dlls

  5. 01:35

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

  6. 02:00

    אז כמו שאמרתי לכם, הדבר הראשון שאנחנו מדפיסים זה ה-Subdir, זה התיקייה C.2 Python 27. לאחר מכן זה ליסט שמכיל את כל תתי התיקיות, ולאחר מכן עוד ליסט שמכיל רק את הקבצים.

  7. 02:14

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

  8. 02:33

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

  9. 02:42

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

  10. 02:55

    שימו לב שב-DLLs אין תיקיות, יש רק קבצים. לכן יש לנו פה List Rack, ולאחר מכן ליסט של כל הקבצים שאנחנו רואים פה. לאחר מכן הפונקציה עוברת לתיקיית דוק, שבה יש קובץ בודד, ועוד פעם יש לנו פה ליסט ריק כי אין תיקיות, ויש לנו ליסט שמכיל קובץ בודד, וכן הלאה וכן הלאה וכן הלאה. אם נסתכל בבייתון

  11. 03:17

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

  12. 03:33

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

  13. 03:56

    אז אנחנו עוברים פה על כל הקצים בתיקייה הנוכחית. עכשיו השם של הקובץ בעצם, כדי להיכנס אליו צריכים לחבר אותו. אז בעצם מה השם הקובץ שלנו?

  14. 04:12

    אז הוא שווה לחיבור של, תכף אני אסביר מה זה הפונקציה הזאת, של המיקום הנוכחי שלי שזה subdir והשם של הקובץ. OS Pass Joint זאת פונקציה שהיא מקבלת כמה חלקים של מיקום של קובץ ומחברת אותם ביחד למה זה טוב נגיד עכשיו אני מביא לה פייתון 2.7 ליב וקורסר היא יוצרת לי את כל הפס השלם הזה עכשיו הדבר הזה לא

  15. 04:45

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

  16. 05:03

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

  17. 05:25

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

  18. 05:43

    עכשיו אנחנו רוצים לראות האם יש בקובץ את ה-String Python. אז with open filed name as file handler for handler if python inl print file name ו-break.

  19. 06:31

    אנחנו באמת לא רוצים לעשות עוד processing לקובץ הזה, בואו נראה באמת יש לנו תוצאות. כן, יש לנו הרבה תוצאות. בואו רק נפתח קובץ אחד ובאמת נראה שבאמת לא עובד פה על אף אחד.

  20. 06:53

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

  21. 07:40

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

  22. 08:01

    אנחנו לא חיפשנו פייתון ככה בתור רווח. אם היינו עושים פייתון ככה, כלומר שיש רווח גם לפני וגם אחרי, הוא לא היה מחזיר את הערכים האלה, וזה בסדר גמור.

  23. 08:12

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

  24. 08:33

    כל מה שצריך לעשות בשביל זה, רגע, פיין פייל ניים, לא צריך לפתוח את הקובץ. כל מה שצריך לעשות זה if file name שווה שווה or פייתון in fine name נראה עכשיו מה קורה הנה יש לנו פייתון sgi פייתון ראס וכולי וכולי כל המקומות שיש לנו פייתון וזאת עוד דרך לעבור על קבצים בואו עכשיו נדבר

  25. 09:33

    על איך יוצרים תיקיות אז כדי ליצור תיקיות בפייתון יש לנו שתי פונקציות פונקציה אחת יוצרת תיקיה אחת ופונקציה שנייה יוצרת כבר כמה תיקיות ביחד בואו נתחיל מהפונקציה הראשונה נגיד אני רוצה ליצור בקונן c תיקייה בשם פייתון.

  26. 10:03

    כל מה שאני צריך לעשות זה os.mkdir/Python שימו לב שבגלל שזה סלאש אני צריך לשים פה את האות r אז בואו רגע שימו לב אין פה תיקיית פייתון ועכשיו יש לי תיקיית פייתון בואו נמחק אותה עכשיו מה יקרה אם אני ארצה ליצור סלאש פייתון סלאש פרקטיס יו לא נצליח כי כשאנחנו באים ליצור תיקייה תיקייה מעל חייבת להיות כאמת אני רק רוצה רגע להסביר למה יש

  27. 10:15

    פה תאות האות r נצרכת פה כי יש לנו פה סלאש.

  28. 10:56

    עכשיו בואו רגע ננסה להריץ בלי r, נראה מה קורה. מה שקורה זה שפייתון לא, במקרה הזה זה עוד עבד, אבל במקרה הזה זה לא יעבוד, כי יש לנו פה backslash n ופייתון לא יודע מה זה backslash n, הוא חושב שזה שורה חדשה, אז הוא לא יודע איך ליצור את התיקייה, אז כדי לפתור את הבעיה הזאת אנחנו שמים פה את האות r לפני,

  29. 11:36

    זה בעצם אומר שזה raw string, ולכן פייטון יודע שהסלאש הזה לא באמת אומר שזה backslash n או backslash b או backslash t שזה tab, אלא זה באמת סלאש בתור סלאש.

  30. 11:51

    מי שמכיר קצת c-sharp, אז ב-c-sharp עושים שטורדל. אז זו באמת הערה חשובה על ה-R הקטנה הזאת ולמה היא נצרכת. בלינוקס אין את הבעיה הזאת, כי בלינוקס זה הסלאש הפוך.

  31. 12:03

    אז אנחנו עצרנו בדיוק בבעיה הזאת שאנחנו רוצים ליצור תיקייה בתוך תיקייה. אז במקרה הזה אי אפשר לשלוש בפונקציה mkdir, אבל אפשר להשתמש בפונקציה make dears שמהשם שאנחנו רואים שהיא יוצרת תיקיות ואז באמת יש לנו פייתון ובתוכה יש practice you ובאמת הכל בסדר.

  32. 12:23

    עכשיו אם אנחנו רוצים ליצור קובץ בתוך התיקייה אז ליצור קובץ פשוט עושים את זה על ידי פתיחה שלו אז with open os.pass.join של dear name אם השם של הקובץ שאנחנו רוצים לפתוח זה אותה נקודה טקסט ואנחנו רוצים לפתוח אותו לקריאה אז אנחנו נעשה פה w אז בעצם איך אנחנו נתייחס לדבר הזה אפשר לקרוא לו as

  33. 13:19

    filef נקודה right נשכוח לסגור סוגריים כמו שצריך בוא נראה מה קיבלנו אוקיי יש לנו פה בעיה למה כבר הקבצים התיקייה כבר קיימת אוקיי אז איך אפשר לפתור

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

ההרצאה הקודמת: sorting

ההרצאה הבאה: generators

הרצאות קשורות מקורסים אחרים

  • קבצים - Files - חלק 1
  • Text Files
  • files ownership
  • עבודה עם קבצים ב-Xcode - חלק 1

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס PHP - פרויקט מעשי