সিরিয়ালাইজেশন হল এমন একটি প্রক্রিয়া যেখানে একটি বস্তুকে একটি ফরম্যাটে রূপান্তরিত করা হয় যা সংরক্ষণ/সংরক্ষণ করা যায় (একটি ফাইল বা মেমরি বাফারে), তাই আমরা পরে এটিকে ডিসিরিয়ালাইজ করতে পারি এবং সিরিয়ালাইজড ফরম্যাট থেকে আসল বিষয়বস্তু/অবজেক্ট পুনরুদ্ধার করতে পারি। এই সমস্ত অপারেশন করার জন্য আমরা একটি পাইথন পিকল মডিউল ব্যবহার করতে যাচ্ছি।
আচার কি?
পাইথন পিকেল মডিউলটি পাইথন অবজেক্ট স্ট্রাকচার সিরিয়ালাইজিং এবং ডি-সিরিয়ালাইজ করার জন্য ব্যবহৃত হয়। যে কোনো ধরনের পাইথন অবজেক্টকে (তালিকা, ডিক্ট, ইত্যাদি) বাইট স্ট্রীমে (0s এবং 1s) রূপান্তরিত করার প্রক্রিয়াকে পিকলিং বা সিরিয়ালাইজেশন বা ফ্ল্যাটেনিং বা মার্শালিং বলা হয়। আমরা আনপিকলিং নামে একটি প্রক্রিয়ার মাধ্যমে বাইট স্ট্রীমকে (পিকলিং এর মাধ্যমে তৈরি) আবার পাইথন বস্তুতে রূপান্তর করতে পারি।
একটি বস্তুকে আচার করার জন্য আমাদের শুধু −
করতে হবে- আচার আমদানি করুন
- ডাম্পস() ফাংশন কল করুন
import pickle class Vehicle: def __init__(self, number_of_doors, color): self.number_of_doors = number_of_doors self.color = color class Car(Vehicle): def __init__(self, color): Vehicle.__init__(self, 5, color) Maruti = Car('Red') print(str.format('My Vehicle Maruti is {0} and has {1} doors', Maruti.color, Maruti.number_of_doors)) pickle_Maruti = pickle.dumps(Maruti) print('Here is my pickled Vehicle: ') print(pickle_Maruti)
আউটপুট
My Vehicle Maruti is Red and has 5 doors Here is my pickled Vehicle: b'\x80\x03c__main__\nCar\nq\x00)\x81q\x01}q\x02(X\x0f\x00\x00\x00number_of_doorsq\x03K\x05X\x05\x00\x00\x00colorq\x04X\x03\x00\x00\x00Redq\x05ub.'
উপরের উদাহরণে, আমরা একটি কার ক্লাসের একটি উদাহরণ তৈরি করেছি এবং তারপরে আমরা এটিকে আচার করেছি, আমাদের গাড়ির উদাহরণকে বাইটের একটি সাধারণ অ্যারেতে রূপান্তরিত করেছি। আমাদের গাড়ির ইন্সট্যান্স আচার হয়ে যাওয়ার পরে, আমরা সহজেই এটিকে একটি বাইনারি ফাইলে বা একটি db ফিল্ডে সংরক্ষণ করতে পারি এবং এই বাইটের গুচ্ছকে একটি অবজেক্ট হায়ারার্কিতে রূপান্তর করতে পরে এটি পুনরুদ্ধার করতে পারি।
দ্রষ্টব্য:যদি আমরা একটি আচারযুক্ত বস্তু দিয়ে একটি ফাইল তৈরি করতে চাই, তাহলে আমাদের ডাম্প() পদ্ধতির পরিবর্তে ডাম্প() পদ্ধতি ব্যবহার করতে হবে।
আনপিক করা
এটি বিপরীত (বা পিকলিং) অপারেশন, যেখানে আমরা বাইনারি স্ট্রীমটি গ্রহণ করি এবং এটিকে একটি অবজেক্ট হায়ারার্কিতে রূপান্তর করি।
পিকল মডিউলের লোড() ফাংশন ব্যবহার করে আনপিকলিং করা হয় এবং বাইট স্ট্রীম থেকে একটি সম্পূর্ণ অবজেক্ট হায়ারার্কি ফিরিয়ে দেয়।
নীচে লোড
import pickle class Vehicle: def __init__(self, number_of_doors, color): self.number_of_doors = number_of_doors self.color = color class Car(Vehicle): def __init__(self, color): Vehicle.__init__(self, 5, color) Maruti = Car('Red') print(str.format('My Vehicle Maruti is {0} and has {1} doors', Maruti.color, Maruti.number_of_doors)) pickle_Maruti = pickle.dumps(Maruti) #Now, let's unpickle our car Maruti creating another instance, another car ... unpickle_Maruti Hyundai = pickle.loads(pickle_Maruti) #Set another color of our new instance Hyundai.color = 'Black' print(str.format("Hyundai is {0} ", Hyundai.color)) print(str.format("Maruti is {0} ", Maruti.color))
উপরের উদাহরণে, আপনি দেখতে পাচ্ছেন যে আমরা আমাদের প্রথম গাড়ির বস্তু (মারুতি) আচার করেছি এবং তারপরে আমরা এটিকে অন্য একটি পরিবর্তনশীল (Hyundai) এ আনপিকল করেছি এবং তাই আমরা এক অর্থে - Hyundai তৈরি করতে মারুতিকে ক্লোন করেছি।
আউটপুট
My Vehicle Maruti is Red and has 5 doors Hyundai is Black Maruti is Red
আচার বনাম JSON
JSON হল জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন, ডেটা-ইন্টারচেঞ্জের জন্য একটি হালকা ফর্ম্যাট এবং এটি মানুষের পাঠযোগ্য। আচারের তুলনায় JSON-এর একটি বড় সুবিধা হল এটি মানসম্মত এবং ভাষা-স্বাধীন। এটি আচারের চেয়ে অনেক বেশি নিরাপদ এবং দ্রুত।
আচারের আরও একটি বিকল্প হল cPickle, যা অনেকটা আচারের মতো কিন্তু C ভাষায় লেখা এবং 1000 গুণ দ্রুত। আপনি আচার এবং সিপিকলের জন্য একই ফাইল ব্যবহার করতে পারেন।
import json mylist = [2, 4, 5, "ab", "cd", "ef"] print("Here is my list: ", mylist) json_string = json.dumps(mylist ) print("Here is my json encoded object: ", json_string) print ("Here is JSON back to a data structure: ",json.loads(json_string))
আউটপুট
Here is my list: [2, 4, 5, 'ab', 'cd', 'ef'] Here is my json encoded object: [2, 4, 5, "ab", "cd", "ef"] Here is JSON back to a data structure: [2, 4, 5, 'ab', 'cd', 'ef']
উপরের কোডে, আমরা প্রথমে অবজেক্ট (আমার তালিকা) নিই এবং একটি স্ট্রিং ফেরত দিতে "ডাম্প" পদ্ধতি ব্যবহার করি এবং তারপরে একটি ডেটা কাঠামোতে JSON লোড করতে আমরা "লোড" পদ্ধতি ব্যবহার করি যা একটি স্ট্রিংকে পরিণত করে এবং এটিকে পরিণত করে। JSON অবজেক্ট ডেটা স্ট্রাকচার।