Python io – BytesIO، StringIO

تتيح لنا وحدة io في Python إدارة العمليات المتعلقة بالملفات الإدخال والإخراج. ميزة استخدام وحدة الإدخال والإخراج هي أن الفصول والوظائف المتاحة تسمح لنا بتوسيع الوظائف لتمكين الكتابة إلى البيانات يونيكود.

وحدة إدخال وإخراج Python

هناك العديد من الطرق التي يمكننا استخدام وحدة io لتنفيذ عمليات التيار والتخزين المؤقت في Python. سنقدم العديد من الأمثلة هنا لإثبات النقطة. لنبدأ.

وحدة Python BytesIO

مثلما نفعل مع المتغيرات، يمكن الاحتفاظ بالبيانات كبايتات في ذاكرة التخزين المؤقت عند استخدام عمليات وحدة io Bytes IO. إليك برنامج عيني لتوضيح ذلك:

import io

stream_str = io.BytesIO(b"JournalDev Python: \x00\x01")
print(stream_str.getvalue())

لنرى الناتج لهذا البرنامج: تقوم وظيفة getvalue() بأخذ القيمة من الذاكرة التخزين المؤقت كسلسلة نصية.

وحدة Python StringIO

يمكننا حتى استخدام StringIO أيضًا وهي مشابهة للغاية في الاستخدام لـ BytesIO. إليك برنامج عيني:

import io

data = io.StringIO()
data.write('JournalDev: ')
print('Python.', file=data)

print(data.getvalue())

data.close()

لنرى الناتج لهذا البرنامج: لاحظ أننا حتى أغلقنا المخزن بعد الانتهاء منه. يساعد هذا في توفير ذاكرة المخزن حيث يتم تخزين البيانات في الذاكرة. أيضاً، استخدمنا الطريقة print بمعامل اختياري لتحديد تيار الإدخال/الإخراج للمتغير، وهو متوافق تمامًا مع عبارة الطباعة.

القراءة باستخدام StringIO

بمجرد أن نكتب بعض البيانات إلى مخزن StringIO، يمكننا أيضًا قراءتها. دعونا نلقي نظرة على مقتطف الشفرة:

import io

input = io.StringIO('This goes into the read buffer.')
print(input.read())

لنرى الناتج لهذا البرنامج:

قراءة الملف باستخدام StringIO

من الممكن أيضًا قراءة ملف وبثه عبر شبكة باستخدام Bytes. يمكن استخدام وحدة الإدخال/الإخراج لتحويل ملف وسائط مثل صورة إلى بايت. إليك برنامج عيني:

import io

file = io.open("whale.png", "rb", buffering = 0)
print(file.read())

لنرى الناتج لهذا البرنامج: من أجل تشغيل هذا البرنامج، كان هناك صورة whale.png موجودة في دليلنا الحالي.

io.open() مقابل os.open()

الدالة io.open() هي الطريقة المُفَضَّلة بكثير لأداء عمليات الإدخال/الإخراج لأنها تُصمَّم كواجهة مستوى عالٍ لأداء إدخال/إخراج الملف. تقوم بتغليف معرف ملف مستوى نظام التشغيل في كائن يمكننا استخدامه للوصول إلى الملف بطريقة بايثونية. تعتني الدالة os.open() بالنداء النظامي POSIX على مستوى أقل. تأخذ معاملات POSIX المستندة إلى الإدخال وتُرجِع معرف ملف يُمثِّل الملف المفتوح. لا تُرجِع كائن ملف؛ القيمة المُرجَعة لن تحتوي على دوال read() أو write(). بشكل عام، تعتبر الدالة io.open() مجرد غلاف فوق الدالة os.open(). تقوم الدالة os.open() أيضًا بتعيين التكوين الافتراضي مثل العلامات والوضع أيضًا بينما io.open() لا تفعل ذلك وتعتمد على القيم التي تُمر إليها.

الاستنتاج

في هذا الدرس، قمنا بدراسة العمليات البسيطة لوحدة IO في Python وكيفية إدارة الأحرف اليونيكود باستخدام BytesIO أيضًا. ومع ذلك، إذا كنت تبحث عن عمليات ملف كاملة مثل حذف ونسخ ملف ثم اقرأ python read file. المرجع: مستندات الواجهة البرمجية

Source:
https://www.digitalocean.com/community/tutorials/python-io-bytesio-stringio