כיצד לבדוק שקובץ נפתח או נסגר ב- Python

How Check File Is Opened



הקובץ משמש לאחסון נתונים לצמיתות. עבודה עם קובץ היא משימה נפוצה מאוד של כל שפת תכנות. פונקציות מובנות רבות קיימות ב- Python ליצירה, פתיחה, קריאה, כתיבה וסגירה של הקובץ. ניתן ליצור שני סוגי קבצים לאחסון נתונים. אלה הם קבצי טקסט וקבצים בינאריים. כל קובץ נדרש להיפתח לפני קריאה או כתיבה. ה לִפְתוֹחַ() הפונקציה משמשת בפייתון לפתיחת קובץ. משתמש ב לִפְתוֹחַ() פונקציה היא דרך אחת לבדוק אם קובץ מסוים נפתח או נסגר. אם ה לִפְתוֹחַ() פונקציה פותחת קובץ שנפתח בעבר, ולאחר מכן IOError ייווצר. דרך נוספת לבדוק אם קובץ נפתח או נסגר היא לבדוק את ערכי ה- סָגוּר המאפיין של אובייקט מטפל הקבצים. שימוש שנה שם () פונקציה היא דרך נוספת לבדוק אם הקובץ נפתח או נסגר. דרכים שונות לבדוק כל קובץ שנפתח או נסגר ב- Python הוצגו במדריך זה.

צור קובץ לבדיקה:

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







שם מזהה אימייל
01 ג'וני ליבר [מוגן בדוא'ל]
02 מאניק הוסיין [מוגן בדוא'ל]
03 Neha Akter [מוגן בדוא'ל]
04 Janatul Ferdous [מוגן בדוא'ל]
05 הלל אודן [מוגן בדוא'ל]



דוגמה 1: בדוק אם הקובץ נפתח או לא באמצעות IOError

IOError יוצר כאשר הפונקציה open () נקראת לפתוח קובץ שנפתח בעבר. צור קובץ פייתון עם הסקריפט הבא כדי לבדוק אם הקובץ נפתח או לא באמצעות לנסות-חוץ לַחסוֹם. כאן כל שם הקובץ הקיים ייחשב כקלט ויפתח לקריאה. לאחר מכן, הפונקציה open () נקראת שוב כדי לפתוח את אותו הקובץ שיעלה IOError וידפיס את הודעת השגיאה.



# קח את שם הקובץ כדי לבדוק
שם קובץ = קלט('הזן שם קובץ קיים: n')
# פתח את הקובץ בפעם הראשונה באמצעות הפונקציה open ()
fileHandler = פתוח(שם קובץ,'ר')
# נסה לפתוח שוב את אותו הקובץ
לְנַסוֹת:
עם פתוח('שם קובץ','ר') כפי שקוֹבֶץ:
# הדפס את הודעת ההצלחה
הדפס('הקובץ נפתח לקריאה.')
# העלה שגיאה אם ​​הקובץ נפתח לפני
למעט IOError:
הדפס('הקובץ כבר נפתח.')

תְפוּקָה:

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





דוגמה 2: בדוק שהקובץ סגור או לא באמצעות המאפיין הסגור.

הערך של ה סָגוּר המאפיין יהיה נכון אם קובץ כלשהו ייסגר. צור קובץ פייתון עם הסקריפט הבא כדי לבדוק אם הקובץ סגור או לא קיים במיקום הנוכחי. הסקריפט לדוגמה הקודם יפיק שגיאה אם ​​שם הקובץ שנלקח מהמשתמש אינו קיים במיקום הנוכחי. בעיה זו נפתרה בדוגמה זו. ה אתה מודול משמש כאן כדי לבדוק את קיומו של שם הקובץ שייקח מהמשתמש. הפונקציה check_closed () הגדירה לבדוק אם הקובץ סגור או שלא יקראו לו אם הקובץ קיים.



# ייבא מודול OS כדי לבדוק את קיומו של הקובץ
יְבוּא
# פונקציית Drfine בדוק אם הקובץ סגור או לא
def check_closed():
אםfileHandler.closed == שקר:
# הדפס את הודעת ההצלחה
הדפס('הקובץ נפתח לקריאה.')
אַחֵר:
# הדפס את הודעת השגיאה
הדפס('הקובץ נסגר'.)

# קח את שם הקובץ כדי לבדוק
שם קובץ = קלט('הזן שם קובץ קיים: n')
# בדוק אם הקובץ קיים או לא
אםos.path.exists(שם קובץ):
# פתח את הקובץ לקריאה
fileHandler = פתוח(שם קובץ,'ר')
# התקשר לפונקציה
check_closed()
אַחֵר:
# הדפס הודעה אם הקובץ אינו קיים
הדפס('הקובץ אינו קיים.')

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע התסריט לעיל. פה, clients.txt קיים במיקום הנוכחי והודעת ההצלחה, הקובץ נפתח לקריאה, הודפס כי ערך הנכס הסגור חזר שֶׁקֶר .

דוגמה 3: בדוק אם הקובץ נפתח או לא באמצעות OSError

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

# ייבא מודול OS כדי לבדוק את קיומו של הקובץ
יְבוּא
# הגדר את שם הקובץ הקיים
שם קובץ ='clients.txt'
# הגדר את שם הקובץ החדש
שם חדש ='customers.txt'
# בדוק אם הקובץ קיים או לא
אםos.path.exists(שם קובץ):
לְנַסוֹת:
# התקשרו לראשונה לפונקציית שינוי השם
שם שם os(שם קובץ, שם חדש)
# התקשרו לפונקציית שינוי השם בפעם השנייה
שם שם os(שם קובץ, שם חדש)
# העלה שגיאה אם ​​הקובץ נפתח
למעט OSError:
הדפס('הקובץ עדיין נפתח.')

אַחֵר:
# הדפס הודעה אם הקובץ אינו קיים
הדפס('הקובץ אינו קיים.')

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע התסריט לעיל. פה, clients.txt קיים במיקום הנוכחי והודעת השגיאה, הקובץ עדיין פתוח, הדפיס כי OSError חריג נוצר כאשר השני שנה שם () הפונקציה בוצעה.

סיכום:

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