ملفات h4>
الملف هو مجموعة من البيانات في الذاكرة الخارجية لها اسم. & nbsp؛ div >
هناك نوعان من الملفات في بايثون:
- نص strong> ، الذي يحتوي على نص مقطوع على سطر ؛ من بين الأحرف الخاصة في الملفات النصية ، يمكن أن يكون هناك أحرف سطر جديد فقط (& quot؛ \ n & quot؛) والعودة إلى بداية السطر (& quot؛ \ r & quot ؛) ؛
- ثنائي strong> ، الذي يخزن أي بيانات ثنائية دون قيود (على سبيل المثال ، الصور والأصوات ومقاطع الفيديو وما إلى ذلك).
بعد ذلك ، سننظر في العمل مع الملفات النصية.
& nbsp؛
مبدأ العمل مع ملف من البرنامج h5>
تتكون من ثلاث مراحل:
1. فتح ملف
2. العمل مع الملف ؛
3. إغلاق الملف.
يسمى مبدأ العملية هذا "مبدأ الشطيرة". strong> .
عند فتح ملف ، يشار إلى وضع التشغيل: قراءة أو كتابة أو إلحاق البيانات بنهاية الملف. الملف المفتوح محظور ولا يمكن للبرامج الأخرى الوصول إليه. & nbsp ؛ بعد العمل مع الملف ، يجب عليك إغلاقه لقطع الاتصال بالبرنامج. عند إغلاق ملف ، تتم كتابة جميع التغييرات التي أجراها البرنامج في هذا الملف على القرص. & nbsp ؛ تعمل لغة Python مع الملفات من خلال متغيرات الملفات.
تتيح الوظيفة open () فتح ملف strong> وإرجاع متغير ملف يمكن استخدامه للوصول إلى الملف.
f = open (file_name، access_mode) ، & nbsp؛
حيث:
- file_name & nbsp؛ - اسم الملف المراد فتحه
- access_mode - وضع فتح الملف. يمكن أن يكون: قراءة ، كتابة ، إلخ. الوضع الافتراضي للقراءة (r) ما لم يتم تحديد خلاف ذلك. & nbsp؛
نبسب ؛
القائمة الكاملة لأوضاع فتح الملف h5>
الوضع |
الوصف |
<الجسم>
r |
للقراءة فقط. td>
|
w |
قابل للكتابة فقط. سيتم إنشاء ملف جديد إذا لم يتم العثور عليه بالاسم المحدد. td>
|
rb |
للقراءة فقط (ثنائي). td>
|
wb |
كتابة فقط (ثنائي). سيتم إنشاء ملف جديد إذا لم يتم العثور عليه بالاسم المحدد. td>
|
r + |
للقراءة والكتابة. td>
|
rb + |
للقراءة والكتابة (ثنائي). td>
|
w + |
للقراءة والكتابة. سيتم إنشاء ملف جديد قابل للكتابة إذا لم يتم العثور عليه بالاسم المحدد. td>
|
wb + |
للقراءة والكتابة (ثنائي). سيتم إنشاء ملف جديد قابل للكتابة إذا لم يتم العثور عليه بالاسم المحدد. td>
|
أ |
يفتح لإضافة محتوى جديد. سيتم إنشاء ملف جديد قابل للكتابة إذا لم يتم العثور عليه بالاسم المحدد. td>
|
a + |
يفتح لإضافة محتوى جديد. سيتم إنشاء ملف جديد لقراءة الإدخال إذا لم يتم العثور عليه بالاسم المحدد. td>
|
أب code> |
يفتح لإضافة محتوى جديد (ثنائي). سيتم إنشاء ملف جديد قابل للكتابة إذا لم يتم العثور عليه بالاسم المحدد. td>
|
ab + |
يفتح لإضافة محتوى جديد (ثنائي). سيتم إنشاء ملف جديد لقراءة الإدخال إذا لم يتم العثور عليه بالاسم المحدد. td>
|
نبسب ؛
تتيح لك طريقة إغلاق () إغلاق ملف strong>.
مثال h5>
Fin = فتح (& quot ؛ input.txt & quot ؛)
Fout = فتح (& quot؛ output.txt & quot؛)
نبسب ؛ على & nbsp ؛ # افعل شيئًا مع الملفات
fout.close ()
Fin.close ()
إذا تم فتح ملف موجود للكتابة ، يتم إتلاف محتوياته. بعد انتهاء البرنامج ، يتم إغلاق جميع الملفات المفتوحة تلقائيًا.
نبسب ؛
|
قراءة البيانات من ملف h4>
عند قراءة ملف نصي ، يدخل دفق البايت إدخال البرنامج واحدًا تلو الآخر ، وبالتالي يوفر الملف وصولاً تسلسليًا إلى البيانات. أي ، إذا أردنا قراءة القيمة العاشرة من الملف ، يجب أن نقرأ أولاً 9.
تسمح قراءة سطر واحد من الملف بتنفيذ طريقة readline () . تسمى هذه الطريقة على متغير ملف.
Fin = فتح (& quot ؛ input.txt & quot ؛)
s = Fin.readline ()
يمكن تطبيق طرق مختلفة على سلسلة القراءة ، مثل تلك المستخدمة عند القراءة من لوحة المفاتيح ( split () ، map () ، إلخ.). على سبيل المثال ، إذا كان هناك رقمان مفصولان بمسافة في سطر من الملف ، فيمكنك حسابهما على النحو التالي:
Fin = فتح (& quot ؛ input.txt & quot ؛)
s = Fin.readline (). split () # Split line على المسافات s = ["2007"، "2021"]
أ ، ب = خريطة (كثافة العمليات ، ق) نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ # تطبيق طريقة int () على جميع عناصر القائمة ،
نبسب ؛ # أي تحويل سلسلة الأحرف إلى رقم
# a، b = int (s [0]، s [1]) & nbsp؛ # هذا هو نفس السطر أعلاه
# a، b = [int (x) for x in s] # نفس المولد
تقرأ الطريقة read () محتويات الملف بالكامل وتُرجع سلسلة قد تحتوي على الأحرف & # 39 ؛ \ n & # 39 ؛. إذا تم تمرير معلمة عدد صحيح إلى طريقة read () ، فلن تتم قراءة أكثر من عدد الأحرف المحدد. على سبيل المثال ، يمكنك قراءة ملف بايت بايت باستخدام طريقة read (1) . .
عند فتح ملف ، يتم تعيين المؤشر الذي يحدد الموقع الحالي في الملف إلى بداية الملف ، وعند قراءته ، يتم نقله إلى الموضع الذي يلي قراءة البيانات. عند الكتابة ، يتحرك المؤشر إلى الموضع الحر التالي.
|
كتابة البيانات في الملف h4>
تُستخدم طريقة write () لكتابة البيانات إلى ملف. يجب تحويل البيانات الرقمية إلى سلسلة. يمكن القيام بذلك إما باستخدام طريقة format () أو باستخدام طريقة str () .
نبسب ؛
ملفات متعددة الأسطر h4>
عند العمل مع ملفات متعددة الخطوط ، يجب أن تعرف متى تنفد البيانات الموجودة في الملف. للقيام بذلك ، يمكنك استخدام ميزة طرق readline () : إذا كان مؤشر الملف يشير إلى نهاية الملف ، فإن طريقة readline () ترجع سلسلة فارغة ، والتي يُنظر إليها على أنها قيمة منطقية خاطئة:
احيانا صحيح:
نبسب ؛ نبسب ؛ s = Fin.readline ()
نبسب ؛ نبسب ؛ إن لم يكن ق: كسر نبسب ؛ # إذا تم استلام سلسلة فارغة عند قراءة سلسلة ،
نبسب ؛ # الحلقة تنتهي ببيان كسر
نبسب ؛ نبسب ؛ print (s، end = & quot؛ & quot؛) & nbsp؛ # تعطيل سطر جديد ، لأنه عند قراءة سطر من ملف & nbsp؛
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ على & nbsp ؛ # حرف سطر جديد "\ n" محفوظة
& nbsp؛
طرق أخرى لقراءة البيانات من الملفات متعددة الأسطر h5>
1. على الفور جميع البيانات الموجودة في القائمة.
Fin = فتح (& quot ؛ input.txt & quot ؛)
list_strings = Fin. readlines () & nbsp؛ على & nbsp ؛ # قراءة جميع الأسطر مرة واحدة
Fin.close ()
لـ s في list_strings:
نبسب ؛ نبسب ؛ print (s، end = & quot؛ & quot؛)
2. استخدام البناء with-as . في هذه الحالة ، يتم إغلاق الملف تلقائيًا بعد انتهاء الدورة.
مع open (& quot؛ input.txt & quot؛) كـ Fin:
نبسب ؛ نبسب ؛ لـ s في Fin:
نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ print (s، end = & quot؛ & quot؛)
يضمن هذا البناء إغلاق الملف. & nbsp؛
3. طريقة للتكرار على السلاسل بأسلوب لغة بايثون (يوصى باستخدام هذه الطريقة). في هذه الحالة ، يتم أيضًا إغلاق الملف تلقائيًا.
لـ s مفتوحة (& quot؛ input.txt & quot؛):
نبسب ؛ نبسب ؛ طباعة (ق ، نهاية = & quot ؛ & quot ؛)
|
ملف السيريلية h5>
إذا كان الملف يحتوي على أحرف روسية (أي حرف برمز أكبر من 127) ، فيجب عليك تحديد الترميز عند الفتح
data = open (& quot؛ input.txt & quot ؛، & quot؛ r & quot ؛، encoding = & quot؛ utf-8 & quot؛)
|