في هذا الدرس، سنناقش مثالًا على بيثون بيكل. في الدرس السابق، تحدثنا عن تعدد المعالجة في بيثون.
بيثون بيكل
يُستخدم بيثون بيكل لتسلسل وإلغاء تسلسل هيكل كائن بيثون. يمكن تسلسل أي كائن في بيثون بحيث يمكن حفظه على القرص. أولاً، يقوم بيثون بيكل بتسلسل الكائن، ثم يحول الكائن إلى تيار أحرف بحيث يحتوي هذا التيار على جميع المعلومات اللازمة لإعادة بناء الكائن في نص بيثون آخر. يرجى ملاحظة أن وحدة البيكل ليست آمنة ضد البيانات المُشوبة بالأخطاء أو المُنشأة بشكل خبيث وفقًا للوثائق. لذا، لا تقم بـ إلغاء التسلسل للبيانات المستلمة من مصدر غير موثوق أو غير مصادق عليه.
تفريغ بيثون بيكل
في هذا القسم، سنتعلم كيفية تخزين البيانات باستخدام Python pickle. للقيام بذلك، علينا استيراد الوحدة pickle أولاً. ثم استخدم الوظيفة pickle.dump()
لتخزين بيانات الكائن في الملف. تأخذ وظيفة pickle.dump()
3 معاملات. المعامل الأول هو الكائن الذي ترغب في تخزينه. المعامل الثاني هو كائن الملف الذي تحصل عليه عن طريق فتح الملف المرغوب فيه بوضعية write-binary
(wb). والمعامل الثالث هو معامل القيمة المفتاحية. يعرّف هذا المعامل البروتوكول. هناك نوعان من البروتوكول – pickle.HIGHEST_PROTOCOL و pickle.DEFAULT_PROTOCOL. انظر إلى الشيفرة البرمجية العينية لمعرفة كيفية تفريغ البيانات باستخدام pickle.
import pickle
# قم بأخذ إدخال المستخدم لتحديد كمية البيانات
number_of_data = int(input('Enter the number of data : '))
data = []
# خذ إدخال البيانات
for i in range(number_of_data):
raw = input('Enter data '+str(i)+' : ')
data.append(raw)
# افتح ملفًا، حيث تريد تخزين البيانات
file = open('important', 'wb')
# قم بتفريغ المعلومات إلى تلك الملف
pickle.dump(data, file)
# أغلق الملف
file.close()
سيطلب منك البرنامج التالي إدخال بعض الإدخالات. في حالتي، كانت مثل هذا.
Python Pickle load
لاسترداد البيانات المختزنة بتنسيق Pickle، الخطوات بسيطة للغاية. يجب عليك استخدام وظيفة pickle.load()
للقيام بذلك. الوسيط الأساسي لوظيفة استرجاع Pickle هو كائن الملف الذي تحصل عليه بفتح الملف بوضع القراءة الثنائية (rb). بسيطة! أليس كذلك. دعنا نكتب الكود لاسترجاع البيانات التي قمنا بتخزينها باستخدام كود تخزين Pickle. انظر إلى الكود التالي للفهم.
import pickle
# افتح ملفًا حيث قمت بتخزين البيانات المختزنة
file = open('important', 'rb')
# قم بتفريغ المعلومات إلى ذلك الملف
data = pickle.load(file)
# أغلق الملف
file.close()
print('Showing the pickled data:')
cnt = 0
for item in data:
print('The data ', cnt, ' is : ', item)
cnt += 1
سيكون الإخراج كالتالي:
Showing the pickled data:
The data 0 is : 123
The data 1 is : abc
The data 2 is : !@#$
مثال على بيكل Python
I made a short video showing execution of python pickle example programs – first to store data into file and then to load and print it. As you can see that the file created by python pickle dump is a binary file and shows garbage characters in the text editor.
ملاحظات مهمة حول بيكل Python
بعض النقاط المهمة حول وحدة Python pickle هي:
- بروتوكول pickle محدد لـ Python – ليس من المضمون أن يكون متوافقًا عبر اللغات. وهذا يعني أنه من المحتمل جدًا أنك لا تستطيع نقل المعلومات لجعلها مفيدة في لغات برمجة أخرى.
- كما أنه لا يوجد أي ضمان للتوافق بين إصدارات Python المختلفة لأن ليس كل هيكل بيانات Python يمكن تسلسله بواسطة الوحدة.
- يتم استخدام أحدث إصدار من بروتوكول pickle افتراضيًا ما لم تقم بتغييره يدويًا.
- آخر شيء وليس آخره، يشير التوثيق إلى أن وحدة pickle غير آمنة ضد البيانات الخاطئة أو الخبيثة المُبنية بشكل سيء.
لذا، هذا كل شيء عن مثال بيكل في بايثون. آمل أن تفهم جيدًا. لأية استفسارات إضافية، يرجى استخدام قسم التعليقات. 🙂 المرجع: التوثيق الرسمي
Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example