במדריך זה נדון בדוגמה של Pickle בפייתון. במדריך הקודם שלנו, דיברנו על מרובה תהליכים בפייתון.
Pickle בפייתון
Pickle בפייתון משמש ל־serialize
ול־deserialize
מבנה של אובייקט בפייתון. כל אובייקט בפייתון יכול להיות Pickled כך שניתן לשמור אותו על הדיסק. בתחילה, Pickle בפייתון מסדר את האובייקט ואז ממיר את האובייקט לזרם של תווים כך שהזרם הזה מכיל את כל המידע הנדרש כדי לשחזר את האובייקט בסקריפט פייתון אחר. שים לב שמודול Pickle אינו מאובטח נגד נתונים שגויים או מזויפים לפי התיעוד. לכן, אסור לבצע Unpickle על נתונים שהתקבלו ממקור לא מהימן או לא מאומת.
Pickle dump בפייתון
בתוך תחום זה, אנו הולכים ללמוד, כיצד לאחסן נתונים באמצעות 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()
התוכנית הבאה תפעיל אותך להזין קלט מסוים. במקרה שלי, זה נראה כך.
העלאת נתוני Pickle של Python
כדי לאחזר נתונים שנשמרו בפורמט Pickle, השלבים פשוטים מאוד. עליך להשתמש בפונקציית pickle.load()
כדי לעשות זאת. הארגומנט העיקרי של פונקציית ה־load של pickle הוא אובייקט הקובץ שאתה מקבל על ידי פתיחת הקובץ במצב קריאה בינארית (rb). פשוט! האם לא? בואו נכתוב את הקוד כדי לאחזר נתונים שמשמורים באמצעות קוד ה־pickle dump. ראה את הקוד הבא להבנה.
import pickle
# פתח קובץ, היכן שאתה מאחסן את הנתונים שנשמרו בפורמט 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 : !@#$
דוגמת Pickle של 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.
הערות חשובות על Pickle של Python
כמה נקודות חשובות על מודול ה־pickle של Python:
- הפרוטוקול של Pickle הוא specifik לפי Python – אין הבטחה שהוא יהיה תואם לפרוטוקולים בשפות תכנות אחרות. זה אומר שנראה כי ברוב המקרים אי אפשר להעביר את המידע כך שיהיה שימושי בשפות תכנות אחרות.
- אין גם הבטחה לתאימות בין גרסאות שונות של Python מכיוון שלא כל מבנה הנתונים של Python יכול להיות מסודר על ידי המודול.
- הגרסה העדכנית ביותר של פרוטוקול ה־pickle משמשת כברירת מחדל אלא אם כן אתה משנה זאת באופן ידני.
- אחרון אבל לא פחות חשוב, מודול הפיקל בפייתון אינו מאובטח נגד נתונים שגויים או מכוונים לרעה לפי התיעוד.
אז, זהו הכול בנושא דוגמה של פיקל בפייתון. מקווים שהבנת טוב. לכל שאלה נוספת אנא השתמש בקטע ההערות. 🙂 הפניה: תיעוד רשמי
Source:
https://www.digitalocean.com/community/tutorials/python-pickle-example