কম্পিউটার

পাইথন অবজেক্ট সিরিয়ালাইজেশন (আচার)


অবজেক্ট সিরিয়ালাইজেশন শব্দটি একটি বস্তুর অবস্থাকে বাইট স্ট্রীমে রূপান্তরিত করার প্রক্রিয়াকে বোঝায়। একবার তৈরি হয়ে গেলে, এই বাইট স্ট্রীমটি আরও একটি ফাইলে সংরক্ষণ করা যেতে পারে বা সকেট ইত্যাদির মাধ্যমে প্রেরণ করা যেতে পারে। অন্যদিকে বাইট স্ট্রীম থেকে বস্তুর পুনর্গঠনকে বলা হয় ডিসিরিয়ালাইজেশন।

সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশনের জন্য পাইথনের পরিভাষা যথাক্রমে পিকলিং এবং আনপিকলিং। পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে উপলব্ধ আচার মডিউল সিরিয়ালাইজেশন (ডাম্প() এবং ডাম্পস()) এবং ডিসিরিয়ালাইজেশন (লোড() এবং লোডস()) এর জন্য ফাংশন প্রদান করে।

আচার মডিউল খুব পাইথন নির্দিষ্ট ডেটা বিন্যাস ব্যবহার করে। তাই, পাইথনে লেখা নয় এমন প্রোগ্রামগুলি সঠিকভাবে এনকোড করা (আচার) ডেটা ডিসিরিয়ালাইজ করতে সক্ষম নাও হতে পারে। এছাড়াও অ-প্রমাণিত উৎস থেকে ডেটা আনপিকল করা নিরাপদ বলে মনে করা হয় না।

আচার প্রোটোকল

প্রোটোকল হল বাইনারি ডেটা থেকে/থেকে পাইথন অবজেক্ট তৈরি এবং ডিকনস্ট্রাকশনে ব্যবহৃত কনভেনশন। বর্তমানে আচার মডিউল নিচে তালিকাভুক্ত 5টি ভিন্ন প্রোটোকলকে সংজ্ঞায়িত করে −

৷ Python 3.4 এ
প্রোটোকল সংস্করণ 0 আসল "মানব-পাঠযোগ্য" প্রোটোকল পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ৷
প্রোটোকল সংস্করণ 1 পুরানো বাইনারি ফর্ম্যাট পাইথনের আগের সংস্করণগুলির সাথেও সামঞ্জস্যপূর্ণ৷
প্রোটোকল সংস্করণ 2 পাইথন 2.3-এ প্রবর্তিত নতুন-স্টাইলের ক্লাসের দক্ষ পিলিং প্রদান করে।
প্রটোকল সংস্করণ 3 পাইথন 3.0 এ যোগ করা হয়েছে। অন্যান্য Python 3 সংস্করণের সাথে সামঞ্জস্যের প্রয়োজন হলে সুপারিশ করা হয়৷
প্রোটোকল সংস্করণ 4 যোগ করা হয়েছে। এটি খুব বড় বস্তুর জন্য সমর্থন যোগ করে

আপনার পাইথন ইনস্টলেশনের সর্বোচ্চ এবং ডিফল্ট প্রোটোকল সংস্করণ জানতে আচার মডিউলে সংজ্ঞায়িত নিম্নলিখিত ধ্রুবকগুলি ব্যবহার করুন

>>> আচার আমদানি>>> আচার।HIGHEST_PROTOCOL4>>> আচার।DEFAULT_PROTOCOL3

যেমন আগে উল্লেখ করা হয়েছে পিকল মডিউলের ডাম্প() এবং লোড() ফাংশন পাইথন ডেটা পিকলিং এবং আনপিকলিং সঞ্চালন করে। ডাম্প() ফাংশন একটি ফাইলে পিকড অবজেক্ট লেখে এবং লোড() ফাংশন ফাইল থেকে পাইথন অবজেক্টে ডেটা আনপিকল করে।

নিম্নলিখিত প্রোগ্রাম একটি ডিকশনারি অবজেক্টকে বাইনারি ফাইলে আচার করে।

import picklef =open("data.txt","wb")dct ={"নাম":"রবি", "বয়স":23, "জেন্ডার":"এম","মার্কস":75}আচার .dump(dct,f)f.close()

উপরের কোডটি কার্যকর করা হলে, অভিধান অবজেক্টের বাইট উপস্থাপনা data.txt ফাইলে সংরক্ষণ করা হবে।

বাইনারি ফাইল থেকে ডিকশনারিতে ডেটা আনপিকল বা ডিসিরিয়ালাইজ করতে, নিম্নলিখিত প্রোগ্রামটি চালান

import picklef =open("data.txt","rb")d =pickle.load(f)print (d)f.close()

পাইথন কনসোল ফাইল থেকে পড়া অভিধান অবজেক্ট দেখায়

{'বয়স':23, 'লিঙ্গ':'M', 'নাম':'রবি', 'চিহ্ন':75}

পিকেল মডিউলে ডাম্পস() ফাংশনও থাকে যা আচারযুক্ত ডেটার একটি স্ট্রিং উপস্থাপনা প্রদান করে।

>>> আচার আমদানি ডাম্প থেকে>>> dct ={"name":"Ravi", "age":23, "gender":"M","marks":75}>>> dctstring =ডাম্প (dct)>>> dctstringb'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00Raviq\x02X\x03\x00\x00\x00ageq\X3\x7 \x06\x00\x00\x00Genderq\x04X\x01\x00\x00\x00Mq\x05X\x05\x00\x00\x00marksq\x06KKu।'

স্ট্রিংটি আনপিকল করতে এবং আসল অভিধান অবজেক্ট পেতে loads() ফাংশন ব্যবহার করুন।

>>> আচার আমদানি লোড থেকে>>> dct =loads(dctstring)>>> dct{'name':'Ravi', 'age':23, 'gender':'M', 'marks':75}

পিকল মডিউল পিকলার এবং আনপিকলার ক্লাসকেও সংজ্ঞায়িত করে। পিকলার ক্লাস ফাইলে পিকল ডেটা লেখে। আনপিকলার ক্লাস ফাইল থেকে বাইনারি ডেটা পড়ে এবং পাইথন অবজেক্ট তৈরি করে

পাইথন অবজেক্টের পিক করা ডেটা লিখতে

পিকল ইম্পোর্ট পিকলারফ =open("data.txt","wb")dct ={'name':'Ravi', 'age':23, 'gender':'M', 'marks':75 Pickler(f).dump(dct)f.close()

বাইনারি ফাইল আনপিকল করে ডেটা ব্যাক রিড করতে

আচার আমদানি থেকে Unpicklerf =open("data.txt","rb")dct =Unpickler(f).load()print (dct)f.close()

সমস্ত পাইথন স্ট্যান্ডার্ড ডেটা টাইপের অবজেক্ট পিকলেবল। তাছাড়া, কাস্টম ক্লাসের বস্তুগুলিও আচার এবং আনপিকল করা যেতে পারে।

 থেকে আচার আমদানি *শ্রেণীর ব্যক্তি:def __init__(self):self.name ="XYZ"self.age =22def show(self):print ("name:", self.name, "age:", self .age)p1 =person()f =open("data.txt","wb")dump(p1,f)f.close()print ("unpickled")f =open("data.txt"," rb")p1 =load(f)p1.show()

পাইথন লাইব্রেরিতে মার্শাল মডিউলও রয়েছে যা পাইথন বস্তুর অভ্যন্তরীণ ক্রমিককরণের জন্য ব্যবহৃত হয়।


  1. পাইথনে ডেটা আমদানি করা হচ্ছে

  2. পাইথনে পরিসংখ্যানগত চিন্তাভাবনা

  3. পাইথনে জালিয়াতি সনাক্তকরণ

  4. পাইথনে সেন্সাস ডেটা বিশ্লেষণ করা হচ্ছে