דרכים לזיהוי סוף קובץ

להלן שאלת סגנון כתיבת קוד או כיצד עדיף לכתוב:
מבוא: בשפת c קיימת מלה שמורה לסוף קובץ
ככה שאפשר לעשות: כל עוד לא סוף קובץ תעשה משהו עם מה שיש שם…

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

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

מה עדיף?
אולי יש שיטה עדיפה שלא ציינתי פה.

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

תודה
איל

בסופו של דבר אני מעוניין במשהוא כמו כל עוד לא סוף קובץ… תעשה…


יחי גוגל :slight_smile:
2 לייקים

שאלה לגבי break:
(מתוך הדוגמאות שם)

with open(filename, 'rb') as f:
    while True:
        buf = f.read(max_size)
        if not buf:
            break
        process(buf)

האם עדיף:

with open(filename, 'rb') as f:
    buf = True 
    while buf:
        buf = f.read(max_size)
        if buf:
            process(buf)

כשהשורה האחרונה עלולה לא להתקיים רק פעם אחת בכל מקרה, כך שכתלות במקרה אולי לא חייבים גם את זה?

אם עדיף הצורה עם break, למה היא עדיפה?

לטעמי כן. בפייתון 3.8 אפשר גם:

with open(filename, 'rb') as f:
    while buf := f.read(max_size):
        process(buf)
2 לייקים

תודה!!
:slight_smile:

מותר לנו כבר להשתמש בbreak?

לא, אני לא ארצה שתשתמשו ב־break עד סוף הקורס.
אח"כ תעשו מה שאתם רוצים :slight_smile:

3 לייקים