summaryrefslogtreecommitdiff
path: root/examples/renumber.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/renumber.py')
-rwxr-xr-xexamples/renumber.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/renumber.py b/examples/renumber.py
new file mode 100755
index 0000000..747bf6e
--- /dev/null
+++ b/examples/renumber.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+
+import argparse
+import os
+import re
+
+
+def _main():
+ example_dir = os.path.dirname(__file__)
+
+ args = _parse_args()
+
+ renames = []
+
+ for name in sorted(os.listdir(example_dir)):
+ path = os.path.join(example_dir, name)
+ match = re.match("([0-9]+)(-.*)", name)
+
+ if os.path.isdir(path) and match is not None:
+ old_number = int(match[1])
+ is_in_range = (
+ (args.from_number is None or args.from_number <= old_number) and
+ (args.to_number is None or old_number <= args.to_number)
+ )
+ if is_in_range:
+ new_number = old_number + args.delta
+ new_name = f"{new_number:02}{match[2]}"
+ new_path = os.path.join(example_dir, new_name)
+ print(f"{name} -> {new_name}")
+
+ if os.path.exists(new_path):
+ raise ValueError("destination already exists")
+
+ renames.append((path, new_path))
+
+ for old_path, new_path in renames:
+ os.rename(old_path, new_path)
+
+
+def _parse_args():
+ parser = argparse.ArgumentParser()
+
+ parser.add_argument("--delta", required=True, type=int)
+ parser.add_argument("--from", required=False, type=int, dest="from_number")
+ parser.add_argument("--to", required=False, type=int, dest="to_number")
+
+ return parser.parse_args()
+
+
+if __name__ == "__main__":
+ _main()