לא הבנתי הערה על תרגיל בנושא קבצים

היי

קודם כל תודה על הבדיקה המהירה, למרות שהגשתי שלוש גרסאות של אותו תרגיל (גרסה 1 עובדת מקרטע וגרסה 3 עובדת כמו שצריך) וקיבלתי הערות על הגרסה הראשונה אני מניחה שזה בסדר.

בכל מקרה, זה היה תרגילCSV מה שעשיתי זה שכתבתי המון פונקציות עזר ואז בסוף התוכנית פתחתי את הקבצים לקריאה וכתיבה (עם with כלומר שהם אמורים להיסגר בעצמם בסוף הריצה של התוכנית)וקראתי לפונקציות שעושות את מה שצריך לעשות.

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

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

מקווה שיצאתי ברורה… תודה!

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

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

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

לייק 1