पायथन अचार मॉड्यूल का उपयोग अजगर वस्तु संरचनाओं को क्रमबद्ध और डी-क्रमबद्ध करने के लिए किया जाता है। किसी भी प्रकार की अजगर वस्तुओं (सूची, तानाशाही, आदि) को बाइट स्ट्रीम (0s और 1s) में परिवर्तित करने की प्रक्रिया को अचार बनाना या क्रमांकन या फ़्लैटनिंग या मार्शलिंग कहा जाता है। हम अनपिकलिंग नामक प्रक्रिया द्वारा बाइट स्ट्रीम (पिकलिंग के माध्यम से उत्पन्न) को वापस पायथन ऑब्जेक्ट्स में परिवर्तित कर सकते हैं।
अचार क्यों?:वास्तविक दुनिया में, अचार बनाना और अनपिकलिंग का उपयोग व्यापक है क्योंकि वे हमें आसानी से एक सर्वर/सिस्टम से दूसरे में डेटा स्थानांतरित करने और फिर इसे एक फ़ाइल या डेटाबेस में संग्रहीत करने की अनुमति देते हैं।
एहतियात:यह सलाह दी जाती है कि किसी अविश्वसनीय स्रोत से प्राप्त डेटा को अनपिक न करें क्योंकि वे सुरक्षा के लिए खतरा पैदा कर सकते हैं। हालांकि, दुर्भावनापूर्ण डेटा को उठाते समय अचार मॉड्यूल को जानने या अलार्म बजाने का कोई तरीका नहीं है।
अचार मॉड्यूल आयात करने के बाद ही हम अचार और अनपिकलिंग कर सकते हैं। अचार का आयात निम्न कमांड का उपयोग करके किया जा सकता है -
import pickle
अचार के उदाहरण:
सूची का चयन कैसे करें, इस पर एक सरल कार्यक्रम नीचे दिया गया है:
एक साधारण सूची चुनें :Pickle_list1.py
import pickle mylist = ['a', 'b', 'c', 'd'] with open('datafile.txt', 'wb') as fh: pickle.dump(mylist, fh)
उपरोक्त कोड में, सूची - "mylist" में चार तत्व ('ए', 'बी', 'सी', 'डी') शामिल हैं। हम फ़ाइल को "w" के बजाय "wb" मोड में खोलते हैं क्योंकि सभी ऑपरेशन वर्तमान कार्यशील निर्देशिका में बाइट्स का उपयोग करके किए जाते हैं। "datafile.txt" नाम की एक नई फ़ाइल बनाई जाती है, जो mylist डेटा को बाइट स्ट्रीम में कनवर्ट करती है।
एक साधारण सूची को अनपिक करें :unpickle_list1.py
import pickle pickle_off = open ("datafile.txt", "rb") emp = pickle.load(pickle_off) print(emp)
आउटपुट:ऊपर स्क्रिप्ट चलाने पर, आप आउटपुट के रूप में अपना mylist डेटा फिर से देख सकते हैं।
['a', 'b', 'c', 'd']
एक साधारण शब्दकोश चुनें -
import pickle EmpID = {1:"Zack",2:"53050",3:"IT",4:"38",5:"Flipkart"} pickling_on = open("EmpID.pickle","wb") pickle.dump(EmpID, pickling_on) pickling_on.close()
शब्दकोश को अनपिक करें -
import pickle pickle_off = open("EmpID.pickle", 'rb') EmpID = pickle.load(pickle_off) print(EmpID)
ऊपर स्क्रिप्ट (अनपिकल) चलाने पर हमें अपना शब्दकोश वापस मिल जाता है जैसा कि हमने पहले शुरू किया था। इसके अलावा, कृपया ध्यान दें क्योंकि हम यहां बाइट्स पढ़ रहे हैं, हमने "r" के बजाय "rb" का उपयोग किया है।
आउटपुट
{1: 'Zack', 2: '53050', 3: 'IT', 4: '38', 5: 'Flipkart'}
अचार अपवाद
अचार मॉड्यूल के साथ व्यवहार करते समय उठाए गए कुछ सामान्य अपवाद नीचे दिए गए हैं -
-
Pickle.PicklingError:अगर अचार वस्तु अचार बनाने का समर्थन नहीं करती है, तो यह अपवाद उठाया जाता है।
-
Pickle.UnpicklingError:यदि फ़ाइल में खराब या दूषित डेटा है।
-
EOFError:यदि फ़ाइल के अंत का पता चलता है, तो यह अपवाद उठाया जाता है।
प्रोन्स:
-
जटिल डेटा को बचाने के काम आता है।
-
उपयोग में आसान, हल्का और कोड की कई पंक्तियों की आवश्यकता नहीं है।
-
उत्पन्न अचार फ़ाइल आसानी से पढ़ने योग्य नहीं है और इस प्रकार कुछ सुरक्षा प्रदान करती है।
विपक्ष:
-
अजगर के अलावा अन्य भाषाएं अचार वाली अजगर वस्तुओं को फिर से बनाने में सक्षम नहीं हो सकती हैं।
-
दुर्भावनापूर्ण स्रोतों से डेटा को अनपिक करने का जोखिम।