یک برنامه پایتون بنویسید که در یک پوشه و زیرپوشههایش فایلهای سورس با پسوندهای مشخص (مثلاً *.c, *.cpp, *.rs) را پیدا کند و هدرهای خطی مانند خطوطی که با // یا /* ... */ شروع میشوند و شامل کلمات کلیدی خاص (مثلاً TODO, NOTE, @header) هستند را با استفاده از regex استخراج کرده و خروجی یکتا و مرتبشدهٔ آنها را در یک فایل متن ذخیره کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:16 0.0
برای حل این مسئله از ماژولهای استاندارد پایتون استفاده کنید: os.walk یا pathlib برای پیمایش پوشهها، fnmatch برای فیلتر کردن نام فایلها بر اساس الگو (مثلاً fnmatch.fnmatch(filename, "*.c")), و re برای نوشتن الگوهای منظم که خطوط کامنت حاوی کلمات کلیدی مورد نظر را میگیرند. فایلها را خطبهخط بخوانید، regex را با re.compile برای کارایی آماده کنید، نتایج را در یک مجموعه (set) قرار دهید تا منحصربهفرد شوند، سپس مجموعه را مرتب کرده و در یک فایل خروجی بنویسید. نکات: از باز کردن فایلها با encoding مناسب (مثل utf-8) استفاده کنید، برای کامنتهای چندخطی میتوانید از re.DOTALL یا الگویی که بلوک /* ... */ را میگیرد بهره ببرید، و برای تست ابتدا روی چند فایل نمونه کار کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: برای تسهیل پیمایش پوشهها، استفاده از pathlib و pathlib.Path.rglob یا os.walk با fnmatch مناسب است. همچنین بهتر است regex را با re.compile با گزینههای re.MULTILINE و re.DOTALL آماده کنید تا هم خطوط //... و هم بلوک /*...*/ را بگیرد. خروجی را در یک set نگه دارید تا تکراریها حذف شوند و سپس با sorted بنویسید. برای اطمینان از سازگاری کاراکترها، فایلها را با encoding utf-8 باز کنید و هنگام کار با بلوکهای /* ... */ از DOTALL استفاده کنید. برای آزمایش، ابتدا روی چند فایل نمونه بررسی کنید تا از صحت جستجوها مطمئن شوید.
گزارش