AzLearn

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

أداة إعادة تسمية سريعة

أعد كتابة أداة Python تعيد تسمية ملفات مجلد بإضافة prefix أو suffix أو تنظيف الاسم.

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

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

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


def normalize_name(name: str) -> str:
    cleaned = re.sub(r"[^A-Za-z0-9]+", "-", name).strip("-")
    return cleaned.lower() or "file"


def new_file_name(path: Path, prefix: str, suffix: str, normalize: bool) -> str:
    stem = normalize_name(path.stem) if normalize else path.stem
    return f"{prefix}{stem}{suffix}{path.suffix}"


def rename_files(folder: Path, prefix: str, suffix: str, normalize: bool, dry_run: bool) -> None:
    for path in sorted(folder.iterdir()):
        if not path.is_file():
            continue

        target = path.with_name(new_file_name(path, prefix, suffix, normalize))
        if target == path:
            continue
        if target.exists():
            print(f"Skip existing target: {target.name}")
            continue

        print(f"{path.name} -> {target.name}")
        if not dry_run:
            path.rename(target)


def main() -> None:
    parser = argparse.ArgumentParser(description="Bulk rename files in one folder.")
    parser.add_argument("folder", type=Path)
    parser.add_argument("--prefix", default="")
    parser.add_argument("--suffix", default="")
    parser.add_argument("--normalize", action="store_true")
    parser.add_argument("--dry-run", action="store_true")
    args = parser.parse_args()

    rename_files(args.folder, args.prefix, args.suffix, args.normalize, args.dry_run)


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