14.3 الملفات في مواقع مختلفة والعمل مع ملفات القيم المفصولة بفواصل
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على:
- توضيح كيفية الوصول إلى الملفات داخل نظام الملفات.
- توضيح كيفية معالجة ملف CSV (ملفات القيم المفصولة بفواصل).
فتح ملف في أي موقع
عند استخدام اسم الملف فقط كوسيط للدالّة open()، ينبغي أن يكون الملف في المجلد نفسه الذي يوجد فيه ملف بايثون الذي يُنفَّذ. مثال: لكي يُنفَّذ fileobj = open("file1.txt") في files.py بنجاح، يجب أن يكون ملف file1.txt في المجلد نفسه الذي يوجد فيه files.py.
غالبًا ما يحتاج المبرمج إلى فتح ملفات من مجلدات غير المجلد الذي يوجد فيه ملف بايثون. يُحدِّد المسار موقع مجلد على الحاسوب بشكل فريد. يمكن استخدام المسار مع اسم الملف لفتح ملف في أي موقع مجلد. مثال: لفتح ملف باسم logfile.log موجود في /users/turtle/desktop، يمكن استخدام ما يلي:
fileobj = open("/users/turtle/desktop/logfile.log")
| نظام التشغيل | موقع الملف | مثال على دالّة |
|---|---|---|
| ماك |
|
|
| لينكس |
|
|
| ويندوز |
|
|
open()، فستكون هناك حاجة إلى شرطة مائلة عكسية إضافية لكي يفهم بايثون الموقع بشكل صحيح.
مفاهيم تطبيقية
فتح الملفات في مواقع مختلفة
لكل سؤال، افترض أن ملف بايثون الذي ينفذ دالّة open() ليس في المجلد نفسه الذي يوجد فيه ملف out.txt.
يشير كل سؤال إلى موقع ملف out.txt، ونوع الحاسوب، والوضع المطلوب لفتح الملف. اختر الخيار الأفضل لفتح ملف out.txt.
العمل مع ملفات القيم المفصولة بفواصل
في بايثون، تُقرأ الملفات وتُكتب بترميز يونيكود (Unicode) افتراضيًا. تستخدم العديد من تنسيقات الملفات الشائعة يونيكود، مثل الملفات النصية (.txt)، وملفات شِفرة بايثون (.py)، وملفات الشِفرة الأخرى (.c،.java).
تُستخدم ملفات القيم المفصولة بفواصل (CSV, .csv) غالبًا لتخزين البيانات الجدولية. تخزن هذه الملفات الخلايا كنصوص يونيكود مفصولة بفواصل. يمكن قراءة ملفات CSV باستخدام التوابع التي تعلمناها حتى الآن، كما هو موضح في المثال أدناه.
\nوخلايا مفصولة بفواصل.
النص الخام للملف:
Title, Author, Pages\n1984, George Orwell, 268\nJane Eyre, Charlotte Bronte, 532\nWalden, Henry David Thoreau, 156\nMoby Dick, Herman Melville, 538
مثال 14.3
معالجة ملف CSV
"""Processing a CSV file."""
# فتح ملف CSV للقراءة
file_obj = open("books.csv")
# الصفوف مفصولة بأحرف سطر جديد \n، لذا يمكن استخدام readlines() لقراءة جميع الصفوف في قائمة سلاسل نصية
csv_rows = file_obj.readlines()
list_csv = []
# إزالة أحرف \n من كل صف وتقسيمه بالفاصلة وحفظه في بنية ثنائية الأبعاد
for row in csv_rows:
# إزالة حرف \n
row = row.strip("\n")
# التقسيم باستخدام الفواصل
cells = row.split(",")
list_csv.append(cells)
# طباعة النتيجة
print(list_csv)
مخرجات الشِفرة هي:
[['Title', ' Author', ' Pages'], ['1984', ' George Orwell', ' 268'], ['Jane Eyre', ' Charlotte Bronte', ' 532'], ['Walden', ' Henry David Thoreau', ' 156'], ['Moby Dick', ' Herman Melville', ' 538']]
مفاهيم تطبيقية
أنواع الملفات وملفات CSV
مزيد من الاستكشاف
تُرمَّز الملفات مثل مستندات وورد (.docx) ومستندات PDF (.pdf)، وتنسيقات الصور مثل رسومات الشبكة المحمولة (PNG, .png) ومجموعة خبراء التصوير المشترك (JPEG, .jpeg أو .jpg)، بالإضافة إلى العديد من أنواع الملفات الأخرى، بطرق مختلفة.
يمكن قراءة بعض أنواع الملفات غير اليونيكود باستخدام مكتبات متخصصة تدعم قراءة وكتابة أنواع مختلفة من الملفات.
PyPDF هي مكتبة شائعة يمكن استخدامها لاستخراج المعلومات من ملفات PDF.
BeautifulSoup يمكن استخدامها لاستخراج المعلومات من ملفات XML و HTML. عادةً ما تحتوي ملفات XML و HTML على يونيكود مع بنية مُنظَّمة بواسطة وسوم الأقواس الزاوية <>.
python-docx يمكن استخدامها لقراءة وكتابة ملفات DOCX.
بالإضافة إلى ذلك، csv هي مكتبة مُضمَّنة يمكن استخدامها لاستخراج المعلومات من ملفات CSV.
جرّب بنفسك
معالجة ملف CSV
يحتوي ملف fe.csv على درجات مجموعة من الطلاب في امتحان نهائي. اكتب برنامجًا لعرض متوسط الدرجات.