یک اسکریپت پایتون بنویسید که با استفاده از fnmatch تمام فایلهای با پسوند .py و .sh در یک پوشه را پیدا کرده، هدر shebang (خطی که با #! شروع میشود) را بررسی کند و اگر وجود نداشت آن را به ابتدای فایل اضافه کند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:37 0.0
برای حل این سوال از ماژولهای استاندارد Python مانند os یا pathlib برای پیمایش پوشهها، fnmatch برای فیلتر کردن نام فایلها و re یا متدهای رشتهای برای تشخیص خط shebang استفاده کنید. هر فایل را باز کنید، خط اول را بررسی کنید (startswith('#!') یا با یک الگوی regex) و اگر shebang وجود نداشت، یک نسخه موقت از فایل بسازید که ابتدا خط shebang را اضافه کند و سپس محتوای قبلی را بنویسد و در پایان فایل اصلی را با نسخه جدید جایگزین کنید؛ برای ایمنی از shutil.copymode یا os.chmod برای حفظ مجوزها و از encoding مناسب استفاده کنید. نکته: برای پردازش پوشهها از os.walk یا pathlib.Path.rglob استفاده کنید و قبل از اجرا روی فایلهای واقعی ابتدا روی مجموعهای از فایلهای نمونه تست کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کاهش ریسک از دست رفتن داده، هنگام اضافه کردن Shebang از یک نسخه موقت (مثلاً با tempfile) استفاده کنید و در صورت موفقیت، فایل اصلی را با نسخه جدید جایگزین کنید. همچنین مطمئن شوید که مجوزهای اجرای فایل حفظ میشود (با shutil.copymode یا os.chmod) و encoding مناسب استفاده شود تا با فایلهای با کاراکترهای مختلف مشکلی پیش نیاید. استفاده از pathlib و fnmatch برای فیلتر کردن فایلهای با پسوند .py و .sh و بررسی خط اول با قاعدهای ساده مثل startswith('#!') یا الگوی regex کافی است. پیش از اجرای روی دادههای واقعی، روی مجموعهای نمونه تستی آزمایش کنید تا از رفتار صحيح مطمئن شوید.
گزارش