Skip to content

Commit d01e9a6

Browse files
committed
Added optional name pattern.
1 parent 66c32ce commit d01e9a6

3 files changed

Lines changed: 31 additions & 29 deletions

File tree

rename/_common.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import os
2+
3+
from mtlogger import logger
4+
from natsort import natsorted
5+
6+
def process_items(parent_dir, items, name_pattern):
7+
items = natsorted(items)
8+
num_digits = len(str(len(items)))
9+
10+
for index, old_name in enumerate(items, start = 1):
11+
old_path = os.path.join(parent_dir, old_name)
12+
extension = os.path.splitext(old_name)[1] if os.path.isfile(old_path) else ''
13+
sequence = str(index).zfill(num_digits)
14+
new_name = f'{name_pattern.replace("$", sequence)}{extension}'
15+
new_path = os.path.join(parent_dir, new_name)
16+
17+
os.rename(old_path, new_path)
18+
logger.log(f'Renamed "{old_name}" to "{new_name}".')
19+
logger.log(f'\nFinished processing "{parent_dir}".')

rename/rename_files_sequentially.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
11
import os
22

3+
from _common import process_items
34
from mtlogger import logger
4-
from natsort import natsorted
55

66
def main():
77
parent_dir = input('Enter the path to the folder containing your files:\n').strip(' "\'')
8+
print()
89

9-
items = [f for f in os.listdir(parent_dir) if os.path.isfile(os.path.join(parent_dir, f)) and not f.startswith('.')]
10-
items = natsorted(items)
11-
12-
total_items = len(items)
13-
num_digits = len(str(total_items))
10+
name_pattern = input('Enter the name pattern pattern (optional; use $ for number interpolation):\n').strip() or '$'
11+
print()
1412

15-
for index, old_name in enumerate(items, start = 1):
16-
file_extension = os.path.splitext(old_name)[1]
17-
new_name = f'{str(index).zfill(num_digits)}{file_extension}'
18-
old_path = os.path.join(parent_dir, old_name)
19-
new_path = os.path.join(parent_dir, new_name)
20-
21-
os.rename(old_path, new_path)
22-
logger.log(f'Renamed "{old_name}" to "{new_name}".')
23-
logger.log(f'\nFinished processing "{parent_dir}".')
13+
items = [f for f in os.listdir(parent_dir) if os.path.isfile(os.path.join(parent_dir, f)) and not f.startswith('.')]
14+
process_items(parent_dir, items, name_pattern)
2415

2516
if __name__ == '__main__':
2617
try:

rename/rename_subfolders_sequentially.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
import os
22

3+
from _common import process_items
34
from mtlogger import logger
4-
from natsort import natsorted
55

66
def main():
77
parent_dir = input('Enter the path to the folder containing your folders:\n').strip(' "\'')
8+
print()
89

9-
items = [f for f in os.listdir(parent_dir) if os.path.isdir(os.path.join(parent_dir, f)) and not f.startswith('.')]
10-
items = natsorted(items)
11-
12-
total_items = len(items)
13-
num_digits = len(str(total_items))
10+
name_pattern = input('Enter the name pattern pattern (optional; use $ for number interpolation):\n').strip() or '$'
11+
print()
1412

15-
for index, old_name in enumerate(items, start = 1):
16-
new_name = f'{str(index).zfill(num_digits)}'
17-
old_path = os.path.join(parent_dir, old_name)
18-
new_path = os.path.join(parent_dir, new_name)
19-
20-
os.rename(old_path, new_path)
21-
logger.log(f'Renamed "{old_name}" to "{new_name}".')
22-
logger.log(f'\nFinished processing "{parent_dir}".')
13+
items = [f for f in os.listdir(parent_dir) if os.path.isdir(os.path.join(parent_dir, f)) and not f.startswith('.')]
14+
process_items(parent_dir, items, name_pattern)
2315

2416
if __name__ == '__main__':
2517
try:

0 commit comments

Comments
 (0)