Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. import os
  2. import re
  3. import argparse
  4.  
  5. def main(path, extensions, padding, number, dry_run):
  6. extensions = r"\.(?:" + "|".join(extensions) + ")" if extensions else ""
  7. st = r"(?:\D*\d+)+\D*(?:" + extensions + r")"
  8.  
  9. reg = re.compile(st)
  10. if number > 1:
  11. st = r"((?:\D*(\d+)){" + str(number - 1) + r"})"
  12. else:
  13. st = r""
  14. st += r"(?:(\D*)(\d+)){1}(.*)"
  15. reg_sub = re.compile(st)
  16.  
  17. for fn in os.listdir(path):
  18. if reg.match(fn):
  19. t = reg_sub.match(fn)
  20. if t:
  21. if number > 1:
  22. tmp = t.group(3).zfill(padding)
  23. new_name = reg_sub.sub(r"\1\2" + tmp + r"\4", fn)
  24. else:
  25. tmp = t.group(2).zfill(padding)
  26. new_name = reg_sub.sub(tmp + r"\3", fn)
  27. print(fn, end=" -> ")
  28. print(new_name)
  29. print("***")
  30. if not dry_run:
  31. os.rename(os.path.join(path, fn), os.path.join(path, new_name))
  32.  
  33. if __name__ == "__main__":
  34. ap = argparse.ArgumentParser(description="Zero padding to number in file name")
  35. ap.add_argument("-e", "--extensions", action="append", help="List file extentions")
  36. ap.add_argument("-n", "--number", type=int, default=1, help="Number's group number")
  37. ap.add_argument("-p", "--padding", type=int, default=2, help="Number of zero for padding")
  38. ap.add_argument("--dry-run", dest="dry_run", action="store_true", help="Only print changed name")
  39. ap.set_defaults(dry_run=False)
  40. ap.add_argument("path", nargs="?", default=os.getcwd)
  41.  
  42. args = ap.parse_args()
  43. main(args.path, args.extensions, args.padding, args.number, args.dry_run)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement