AzLearn

تمرين إعادة البناء

File Extension Counter

أعد كتابة سكربت Python يحصي امتدادات الملفات داخل مجلد.

python ~10 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
import argparse
from collections import Counter
from pathlib import Path


def files_in(folder: Path, recursive: bool) -> list[Path]:
    pattern = "**/*" if recursive else "*"
    return [path for path in folder.glob(pattern) if path.is_file()]


def extension_for(path: Path) -> str:
    return path.suffix.lower() or "[no extension]"


def count_extensions(folder: Path, recursive: bool) -> Counter[str]:
    return Counter(extension_for(path) for path in files_in(folder, recursive))


def main() -> None:
    parser = argparse.ArgumentParser(description="Count file extensions in a folder.")
    parser.add_argument("folder", nargs="?", default=".", help="Folder to scan")
    parser.add_argument("-r", "--recursive", action="store_true", help="Scan subfolders")
    args = parser.parse_args()

    folder = Path(args.folder)
    if not folder.is_dir():
        raise SystemExit(f"Not a folder: {folder}")

    counts = count_extensions(folder, args.recursive)
    if not counts:
        print("No files found.")
        return

    for extension, total in counts.most_common():
        print(f"{extension:15} {total}")


if __name__ == "__main__":
    main()
اكتب هنا