توی شرکت ی بخش آرشیوی داریم که همهی کدهای قدیمی zip شده هستند و دیتاها tar compressed که خب طبیعی هست
گاهی نیاز میشه یک پروژه قدیمی به روز بشه یا اینکه یک بخشی از پروژه قدیمی برای کارهای جدید لازم میشه یا …
خلاصه لازم میشه که اینکار صورت بگیره از قدیم هم یک چیزی جا افتاده که هر ورژنی که deploy میشه (فیچرهای بزرگ و اصلی) علاوه بر اینکه روی گیت لیبل میخوره و … ی نسخه ازش بکاپ گرفته میشه بازم با فرمت zip
دیدم یکی از نیروها نشسته اینارو دونه دونه داره extract میکنه روی سیستمش و دنبال یکی از پروژه هایی میگرده که n فیچر مورد نیاز رو پیاده سازی کرده کلی هم وقتش رو گرفته بود و عصبی بود
براش همه تلاشش رو تبدیل کردم به این چند خط کد
import glob, importlib
packages = glob.glob(“./**/*.zip”)
for pk in packages:
sys.path.append(pk)
name = pk.split(‘/’)[-1].split(‘.’)[0]
module = importlib.import_module(module_name, package=None)
try:
module.needed_feature()
print(f”found feature in: {pk}”)
break
except:
pass
اینجوری تو کمتر از چند دقیقه (بقول خودش تا قهوه رو بریزه کد مدنظر رو پیدا کرده بود)
دلیل اصلی zip ذخیره کردن کدها و جدا کردنش از دیتاها توی شرکت هم همینه پایتون توانایی اجرای کد داخل فایل zip رو هم داره.
بعضی وقتا پرسیدن دلیل اینکه چرا یک تصمیم خاص گرفته شده میتونه خیلی کمک کننده باشه و خیلی وقت براتون ذخیره کنه.
منبع:
https://t.me/pytens