f = open(file='../../datasets/example_root/a/a.txt', mode='r')
content = f.read()
f.close()
print(content)
lorem ipsum dolfet
weilfur badem zelfur
تقع الملفات في جهاز الحاسب ضمن ملفات أخرى على هذا النحو (في أنظمة ويندوز Windows):
C:\
└── Users
└── Adam
└── MyProject
├── data
│ └── datafile.csv
└── scripts
└── analysis.py
فالحرف الأوَّل في الأعلى (C:
) يمثِّل مكان جهاز التخزين. وإن رأيت D:
أو E:
فيعني أن الملفات تخزن في جهازين آخرين.
وقد تتساءل لماذا لم نبدأ بالحرف A:
أو B:
؟ وسبب ذلك تاريخي. وذلك أنَّهما كانا محجوزين للإشارة لجهاز تخزين عتيق يسمى القرص المرن (floppy disk)، ولم يعد يستعمل.
أما في أنظمة لينكس (Linux) وماك (MacOS) فإن الأصل يعبَّر عنه لا بحرف، وإنما بالمسار الجذر: /
على النحو التالي:
/
└── home
└── adam
├── projects
└── myproject
├── data
│ └── datafile.csv
└── scripts
└── analysis.py
وتسمى الملفات المتضمنة لملفات أخرى: دليل (Directory). وهو الذي يعبَّر عنه فيما ترى في الواجهة الرسومية على شكل مجلَّد (Folder).
فإذًا الملفات على نوعين:
datafile.csv
ملف بيانات جدولية analysis.py
ملف برنامج بايثون data
دليل / مجلد البيانات myproject
دليل / مجلد المشروع صيغة الملف (File Extension) تُعرَفُ بالحروف بعد آخر نقطة. مثل:
datafile.csv
صيغة csv
analysis.py
صيغة py
المسار هو نص يحدد موقع الملف في النظام. وهو ضربان:
.
هو الدليل الحالي...
الصعود مرةPath | Example |
---|---|
Absolute | /home/adam/projects/myproject/scripts/analysis.py |
Relative | ../data/datafile.csv |
فالمسار الثاني بالنسبة للملف analysis.py
صحيح، لكن ليس بالنسبة لأي ملف آخر غيره خارج نفس المجلد. فهو صعودٌ للأعلى مرةً، ثم الدخول إلى الدليل data
الذي يقع أسفله، ثم الوصول إلى الملف datafile.csv
.
فيه ثلاثة خطوات:
open()
: وهذا طلبٌ من نظام التشغيل الإذنَ (بحسب mode
الإذن بالقراءة r
أو الإذن بالكتابة w
أو الإذن بالقراءة والكتابة rw
)؛ ونحصل في النتيجة على مؤشر يشير إليه.file.read()
فيتم نسخ محتواه من التخزين إلى الذاكرةfile.close()
وذلك على النحو التالي:
f = open(file='../../datasets/example_root/a/a.txt', mode='r')
content = f.read()
f.close()
print(content)
lorem ipsum dolfet
weilfur badem zelfur
وهكذا نكتب في الملف باستعمال file.write()
، بعد فتح الملف بوضع الكتابة 'w'
في open(mode='w')
:
content = """Salam everyone,
I hope you are enjoying the course,
Thank you.
"""
f = open(file='../../datasets/example_root/a/zzz.txt', mode='w')
f.write(content)
f.close()
print(content)
Salam everyone,
I hope you are enjoying the course,
Thank you.
انظر توثيق قراءة وكتابة الملفات.
ولأن الإغلاق ضروري بعد كل فتح؛ فقد وفرت بايثون لذلك مركبًا لغويًّا يُعرف بإدارة السياق. فالملف نوعٌ يعتبر مدير سياق (Context Manager) فيجوز استعمال with
وتضمين القطعة في سياقها الذي يتكفل بإغلاق الملف تلقائيّا عند نهاية آخر جملة في قطعة داخلها. وذلك على النحو التالي: