קריאה וכתיבה לקבצים Python File Reading And Writing
קריאה מקבצים
על מנת לקרוא קבצים בפייתון נבצע זאת עם open , תחילה נייצר קובץ טקסט בשם file.txt ואליו נכניס את הערך Hello World
כעת נגדיר משתנה בשם file ואז נגדיר file.txt וה r בסוף זה בשביל read
אם נרצה לכתוב לקובץ במקום r נגדיר w
file = open("file.txt", "r") content = file.read() print(content)
בשביל להדפיס את מה שכתוב בקובץ, ניצור משתנה בשם content ואז file.read שכן המשתנה הוא file עם .read
מה קורה כאשר אתם רוצים קובץ מנתיב שונה מהמקום בו נמצא הסקריפט, האופציה היא להוסיף \\ לכל \ שיש בנתיב, כך
זאת אומרת שאנחנו משתמשים בנתיב האבסולוטי, נתיב אבסולוטי אומר שצריך לכתוב את כל הנתיב אל הקובץ, אם לא נכתוב כמו בדוגמה למטה אנחנו משתמשים בנתיב מסוג רלטיב Relative שאומר שרק המיקום בו הסקריפט נמצא הוא יצור או יקרא את הקובץ
file = open("C:\\Users\\Tal\\Documents\\Python\\\Tal\\file.txt", "r") content = file.read() print(content)
אז איך יוצרים קובץ? על ידי שימוש ב w במקום r כעת ניצור קובץ ונכתוב אליו
file=open("C:\\Users\\Tal\\Documents\\Python\\\Tal\\filew.txt","w") file.write("Hello World") file.close()
אבל מה יקרה אם תרצו להוסיף עוד שורה לקובץ? ברגע שתבצעו את אותה הפקודה ותכתבו במקום Hello World נניח Hi World אז הטקסט המקורי ימחק וHi World "ידרוס" אותו
אם נשתמש בקוד הבא
file=open("filew.txt","w") file.write("Hello World") file.write("Hi World") file.close()
יהיה לנו שורה אחת מחוברת כך
Hello WorldHi World
על מנת שהטקסט השני ירד שורה נכניס /r בשורה הראשונה ואם צריך בכל שורה בה אני רוצה "להכניס" שורה חדשה עם Enter
file=open("filew.txt","w") file.write("Hello World \n") file.write("Hi World") file.close()
ומה קורה כאשר יש רשימה? ואנחנו רוצים לכתוב לטקסט, אם נבצע את אותו שורות קוד ברשימה, נקבל את הרשימה מחוברת, לכן נשתמש ב for על מנת ל"הכניס" לכל אחד /r
file=open("filew.txt","w") names = ["Tal", "Noy", "Liya"] for name in names: file.write(name+"\n") file.close()
על מנת להוסיף לטקסט שכבר קיים ולא לדרוס את מה שהיה נשתמש בa שהוא קיצור ל append
מספיק שאשנה את הקוד מw לa כמו בדוגמא
file=open("filew.txt","a") names = ["Tal", "Noy", "Liya"] for name in names: file.write(name+"\n") file.close()
ואז בכל פעם שתריצו את הסקריפט יכתבו שוב כל השמות כך:
נתיבים ותיקיות בעזרת path
יש מודל שכברירת מחדל נמצא בפייתון והוא path נייבא אותו וספציפי ממנו את Path (עם P גדולה)
כעת נגדיר משתנה בשם נתיב ואז נגדיר שיבדוק אם יש תיקייה בשם company ואז נדפיס ע"י מוד בשם exists, בדיוק כמו בתמונה
הערך שנקבל הוא True או Flase שכן התיקייה קיימת או לא, אצלי היא קיימת ולכן התשובה תיהיה True
from pathlib import Path native = Path("company") print(native.exists())
נוכל ליצור תיקייה באותה הדרך ע"י שינוי של exists ל mkdir
נוכל גם להסיר ע"י rmdir במקום exists