Flush? מחברת 3 כתיבה לקובץ

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

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

לדוגמה, מקרה בו פייתון ואת פותחות במקביל את הגרסה הבאה של הקובץ:

1
2

את עורכת את הקובץ בעזרת פייתון להיות:

1
2
3

ובאקסל את מוסיפה תא חדש:

1
2
4

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

לייק 1

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

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

לייק 1

שאלה נוספת לגבי flush() -
כשאני מפעילה אותה, אז היא בעצם מרוקנת את כל מה שהיה במכלא אל תוך הקובץ? כלומר, המכלא מתרוקן?

השימוש ב־flush נדיר יחסית, לרוב פשוט סוגרים את הקובץ כשרוצים שהוא יכתב.
אבל כן, flush לוקח את כל מה שכתבת בעזרת write לקובץ (הטרמינולוגיה היא “buffer” שאליו כתבת נתונים) ו"שופך" אותה לתוך הקובץ.

לייק 1