تمرين إعادة البناء
أداة إعادة تسمية سريعة
أعد كتابة أداة 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()اكتب هنا