Pickle در پایتون یکی از ماژول‌هایی است که با استفاده از آن می‌توان قابلیت سریالیزه کردن اشیا را در پایتون به کار برد. در این مورد، یک شی که می‌تواند دیکشنری یا لیست باشد، به صورت ترتیبی از بایت‌ها به نمایش گذاشته ‌می‌شود و در یک فایل ذخیره خواهد شد. در بسیاری از برنامه‌ها و حتی بازی‌های رایانه‌ای شما فایل‌هایی را مشاهده می‌کنید که حین نصب روی سیستم و در مسیر مشخص شده کپی می‌شوند. در ادامه این مقاله از سری مقالات آموزش رایگان پایتون در مورد این ماژول و قابلیت ها یمنحصر به فرد آن صحبت خواهیم کرد.

دوره معرفی شده در ویدئو

در ادامه گفتار بالا در صورتی که شما این فایل‌ها را با استفاده از نوت پد ویندوز باز کنید، یک فایل ناخوانا مشاهده خواهید کرد که این موارد همان فایل‌های سریالیزه شده هستند. شما حین کدنویسی در پایتون می‌توانید اطلاعاتی را سریالیزه کنید و آن را داخل یک فایل مشخص ذخیره کنید. این قابلیت در زمان ساخت یک برنامه مورد استفاده قرار می‌گیرد که با آن می‌توانید داده‌های حساس را سریالیزه کرده و در زمان مورد نیاز deserialize کنید. 

نحوه به کارگیری Pickle در پایتون

نحوه به کارگیری Pickle در پایتون بسیار آسان است. همانطور که در وبسایت synopsys نیز بیان شده است، این یک ماژول پایتون است که به صورت پیش فرض روی سیستم شما نصب خواهد شد و در زمان مورد نیاز، باید آن را با کیورد import داخل کد خودتان وارد کنید.

دقت داشته باشید که کار با فایل‌ها در زبان پایتون بسیار آسان است و روش سریع و بدون دردسری برای این کار وجود دارد. برای مثال، در برنامه زیر یک دیکشنری ایجاد شده است و با ایجاد یک فایل با نام my_pickle، این داده روی آن ذخیره خواهد شد. 

قابلیت dump در ماژول pickle این امکان را می‌دهد تا شما یک داده را به صورت سریالیزه شده داخل یک فایل ذخیره کنید. پس از ذخیره داده، می‌توانید فایل ایجاد شده را داخل نوت پد باز کنید و نتیجه کار را مشاهده کنید.

import pickle

dict1 = {

    "age": 20,

    "name": "john",

    "job": "engineer"

    }

pickle_out = open("dict.pickle", "wb")

pickle.dump(dict1, pickle_out)

pickle_out.close()

نحوه خواندن یک فایل با Pickle در پایتون

پس از ذخیره داده‌ها به صورت سریالیزه شده، شما نیاز دارید تا در زمان‌های مختلف این داده‌ها را فراخوانی کنید. شاید نیاز باشد تا در شرایط مختلف داده‌ها آپدیت شده و دوباره در همان فایل ذخیره شوند. نحوه خواندن یک فایل با Pickle در پایتون آسان است و شما می‌توانید با استفاده از load این کار را به راحتی انجام دهید.

دقت کنید که این بار برای استفاده از تابع open، باید آن را در حالت rb قرار دهید که نشان از خواندن تابع به صورت باینری است.

import pickle

pickle_in = open("dict.pickle", "rb")

example = pickle.load(pickle_in)

print(example) #prints {'age': 20, 'name': 'john', 'job': 'engineer'}

کاربرد مهم ماژول Pickle در پایتون

زمانی که شما یک اپلیکیشن یا برنامه در پایتون تولید می‌کنید، مطمئنا فایل‌های داده و فایل‌های اضافی برای آن وجود خواهد داشت. فرض کنید که یک سیستم مدیریت دانشجویان طراحی کرده‌اید که اطلاعات مورد نظر باید به صورت یک فایل ذخیره شوند. اما ذخیره داده‌ها در این شرایط به صورت فایل متنی عقلانی نیست و بهتر است از قابلیت‌های سریالیزه کردن در این زبان استفاده شود.

سریالیزه کردن قابلیتی است که در سایر زبان‌های برنامه نویسی مانند سی شارپ و حتی جاوا نیز مورد استفاده قرار می‌گیرد. با این قابلیت، شما در شرایط مختلف می‌توانید داده را از روی فایل Deserialize کنید و به روز رسانی مورد نظر را روی آن انجام دهید. در این صورت، هر زمان که نیاز به ذخیره فایل باشد، قابلیت dump در Pickle پایتون این امکان را برای شما فراهم کرده است.

مزایای استفاده از Pickle در پایتون

مزایای استفاده از Pickle در پایتون بسیار زیاد است و شاید مهم‌ترین آن‌ها آسان بودن در استفاده باشد. کار با فایل‌ها در این مورد به سادگی امکان پذیر است و شما با چند خط کد می‌توانید داده‌های مورد نظر را در شرایط نیاز روی یک فایل سریالیزه کنید. 

مزایای استفاده از Pickle در پایتون

آسان بودن کد نویسی

شاید آسان بودن کد نویسی که در چند خط امکان پذیر است، محبوبیت زیادی به ماژول Pickle در این زبان برنامه نویسی داده باشد. در شرایط مختلف و برای سریالیزه کردن داده‌ها مطمئنا نیاز به نوشتن کدهای طولانی است که ماژول پیکل این کار را برای برنامه نویس آسان کرده است.

امنیت

اگر با این ماژول کار کرده باشید، حتما می‌دانید که داده‌ ذخیره شده به صورت تقریبا ناخوانا برای انسان است. این ناخوانایی امنیت خوبی برای داده‌ها به وجود خواهد آورد که از آن می‌توان برای ذخیره داده‌ها برای بسیاری از اپلیکیشن‌ها استفاده کرد. 

مشکل استفاده از Pickle در زبان پایتون

در کنار تمامی مزایای پیکل در این زبان، بهتر است به مشکل استفاده از Pickle در پایتون نیز توجه داشته باشیم. زمانی که شما داده‌ها را از منابع مختلف دریافت می‌کنید، امکان وجود خطرات امنیتی برای unpickle کردن آن‌ها همواره وجود دارد. بنابراین، همواره توصیه می‌شود داده‌هایی را با استفاده از این ماژول استفاده کنید که از امنیت سورس آن مطمئن هستید.  

البته، مشکل دیگری نیز برای این ماژول وجود دارد که بهتر است به آن اشاره شود. زبان‌های دیگر به جز پایتون در شرایط مختلف قابلیت خواندن داده‌های Pickle شده را با استفاده از این ماژول ندارند و این می‌تواند کار یک برنامه نویس را با مشکل مواجه کند. 

سخن آخر

برای استفاده از ماژول پیکل تنها کافی است آن را در ابتدای کد اضافه کنید و با استفاده از آن داده‌ها را سریالیزه کنید. در بسیاری از موارد Pickle در پایتون امنیت خوبی برای استفاده ندارد. در واقع، شما تنها باید داده‌ای را unpickle کنید که از امن بودن و نبود مشکلات امنیتی در آن اطمینان داشته باشید. در صورت دقت به این موارد، استفاده از Pickle در پایتون قابلیت خوبی است که حین برنامه نویسی و مدیریت داده‌ها در این زبان برنامه نویسی به شما کمک خواهد کرد. در صورتی که در مورد استفاده و به کارگیری از این ماژول سوال یا مشکلی دارید، خوشحال خواهیم شد آن را در ادامه این مطلب با ما در میان بگذارید.