مقدمة في الملفات
لا يقتصر التواصل بين المستخدم والبرنامج على المراسلة النصية المباشرة. بل يمكن رفع ملفات تحوي بيانات كبيرة ليتم معالجتها.
أنواع الملفات
فالملف هو حزمة للبيانات يتم رصفها بإحدى طريقين:
- سلسلة نصية (Plaintext)
- أي قارئ نصي يمكن أن يتصفحها
- سهلة على البشر وكذلك يمكن معالجتها
- سلسلة ثنائية (Binary)
- تحتاج لقارئ مخصص ليقرأها ويتعامل معها
- لكنها أقرب للحاسب وأسرع للمعالجة وأخف حِملاً
فمثلاً عندما تفتح ملف بصيغة .txt فإن نظام التشغيل قد تم ضبطه ليفتح بقارئ الملفات النصية. وربما حين تفتح ملف بصيغة .py فإنه يفتحه بمحرر النصوص البرمجيَّة (VS Code) أو غيره. فكلاهما سلسلة نصيَّة من الأحرف والرموز المقروءة بالنسبة للبشر؛ إلا أنَّ لكلٍّ صيغة وقارئًا يفضله.
وكثيرًا ما تُحفَظ بيانات الجداول في صيغة نصيَّة هي: .csv ويمكن حينئذٍ فتحها بقارئ عاديّ، أو حتى ببرمجيَّة مختصَّة بمعالجة الجداول مثل إكسل ونحوه.
أما السلسلة الثنائية؛ فنحو ملفات الصور (jpg و png) والصوت (mp3 و wav) والفيديو (mp4 و avi) وغيرها.
استقبال ملف مرفوع
احفظ ملفًا بامتداد .txt يحتوي على أي كلام. يمكنك أن تنسخ فيه هذا الكلام إن ردت:
ثم شغّل المثال التالي: ثم اسحب الملف إلى موضع الرفع أو اضغط لاختياره:
كتابة ملف نصي
نحدد اسم الملف ونفتحُه بوضع الكتابة "w". ينشئ هذا الوضع الملف إذا لم يكن موجودًا، ويستبدل محتواه إذا كان موجودًا. شغّل المثال:
إغلاق الملف تلقائيًّا
قد ننسى إغلاق الملف، أو يقع خطأ قبل الوصول إلى file.close(). لذلك نستخدم مدير السياق بجملة with؛ فنعيد كتابة مثال القراءة هكذا:
تفتح open() الملف، وتحفظ as file كائن الملف في المتغير file. نضع ما يحتاج الملف المفتوح داخل الكتلة المزاحة؛ وعند الخروج منها يُغلق تلقائيًّا، حتى لو وقع خطأ داخلها. ويبقى النص في contents متاحًا بعدها.
ولا يقتصر الفتح والإغلاق على الملفات؛ فمن موارد نظام التشغيل أيضًا اتصالات الشبكة. إغلاق المورد بعد استعماله يحرر ما حُجز له، فلا تتراكم الموارد المفتوحة. وفي الملفات خصوصًا، يضمن الإغلاق إخراج ما بقي من البيانات في ذاكرة الانتظار عند الكتابة. لذلك سنستخدم with في أمثلة الملفات التالية.