-پایتون متغیر a و b رو ترشی کن!!!
-کجا بریزمش؟
-بریزش تو data.dat
--10 روز بعد--
-پایتون data.dat رو باز کن ببین چی شده؟؟؟
-داخل a نوشته 12 و داخل b نوشته "hello world"
####-----هشدار:پیکل امن نیست و به هیچ وجه اطلاعات مهمتون رو با تصور امنیت ()pickle.dump اش نکنین بدین دست یکی دیگه----####
پیکل یک کتابخونه برای ترشی کردن(ریختن تو یک فایل) یک متغیر, دیکشنری, آرایه یا ... هستش.
دوتا تابع اصلی برای پیکل وجود داره یکی dump و یکی load(که البته چون بهم میریخت تو راست به چپ پرانتز هاشون رو نزاشتم اما چون تابعه خودتون با پرانتز فرضش کنید :)
خب منطقا اول باید ایمپورتش کنید اگه قراره ازش استفاده کنید:
import pickle
خب میخوایم یک فایل دیتا بسازیم که برای اینکه یوزر بفهمه این دیتا هست بهتر پسوندش هم dat باشه.
a = 23
f = open("data.dat", "wb")
در خط اول متغیر a رو برابر 23 قرار میدیم و در خط دوم در متغیر f یک فایل رو میریزیم با نام data.dat و مود نوشتن باینری(البته این میتونست rb هم باشه که در اون صورت فقط میشد خوند و اگه هم نبود ارور میداد). اگه فایل هم نباشه خودش میسازه(در مود wb البته).
و بعد هم a رو ترشی میکنیم و میریزیمش توی data.dat(که الان توی مموری هست توی متغیر f):
pickle.dump(a, f)
و بعد هم فایل رو میبندیم که مموری الکی اشغال نشه(البته اگر هم نذاشتین هم بعد از بسته شدن برنامه خودش بسته میشه):
f.close()
و اگه نگاهی به data.dat بندازین با نوت پد یکسری چرت و پرت میبینید و دلیلش اینه که این یک فایل باینری نه text و اگه اصرار دارید داخل فایل رو ببینید با یک hexeditor این کار رو انجام بدین.
و میخوایم بخونیمش:
f = open("data.dat", "rb")
pickle.load(f)
و باید بهتون 23 رو بده. دیدین که من اینجا از rb جای wb استفاده کردم که فقط میتونم بخونم ولی wb هم میشد ولی الکی دسترسی اضافه میگرفت و اگه فایل read only هم بود احتمالا ارور میداد.
ولی برای چند متغیر چی؟؟؟ خب میتونین مقدار هاشو بریزین تو یک آرایه یا متغیر هارو بزارین تو یک دیکشنری.
خب, خب, خب. این مقدمه ای از pickle بود اما اگر بیشتر میخواین بدونین میتونین به اسناد پیکل نگاهی بندازین.
و خب این پست رو با خستگی نوشتم و اگه مشکلی داشت بهم بگین که درستش کنم :)
تا خوابم نرفته بگم دیدم ویرگول یکم کد هارو بد نشون نقل قولشون کردم تا درست نمایش داده بشن و اشتباه از من نبوده از ویرگول بوده.