Renaming files can be a tedious task, especially if you have many. Last time I was sorting through my photos and found myself renaming them one by one, I decided to automate the task 👩🏻🔬
How it Works
Input Validation: The script begins by checking if the required arguments are provided via command-line input. If not, it prompts the user to provide the folder path and the new name for the files. The sys module is used to extract the command-line input.
File Enumeration: It then lists all the files in the specified folder. The script will iterate through all the eligible files in the folder, renaming them sequentially. The os module is used for file-related operations. A regular expression (
file_extension_pattern
variable) is defined using the re module. Its role is to match the file extension (eg..png
for a file namedimage.png
).
Renaming Process: For each file with an image extension (e.g., JPEG, PNG), the script extracts the file extension using the regular expression pattern, generates a new name, and renames the file accordingly. The new name is formed by concatenating the name, an underscore _, and the count. For example, if the user provides
image
as the new name and the script processes 3 files, the new names would be:image_1
,image_2
,image_3
. Feel free to adjust this pattern based on your needs.
import os
import sys
import re
if(len(sys.argv) < 3):
print('Please provide a folder path and a new name.')
sys.exit(1)
path = sys.argv[1]
name = sys.argv[2]
folder = os.listdir(path)
count = 1
image_extensions = ('jpeg', 'jpg', 'png', 'tiff', 'gif')
base_path = path + '/'
file_extension_pattern = r'\.[^.]+$'
for file in folder:
if(file.lower().endswith(image_extensions)):
match = re.search(file_extension_pattern, file)
file_extension = match.group(0)
new_name = f"{name}_{count}"
old_path = base_path + file
new_path = f"{base_path}{new_name}{file_extension}"
os.rename(old_path, new_path)
count+=1
Usage
To utilize this script, follow these steps:
Save the script into a file with a .py extension (e.g., rename_files.py).
Open a terminal or command prompt and navigate to the directory containing the script.
Run the script by providing the folder path and the desired new name as command-line arguments. For example:
python <script> <path> <new_name>
python3 rename_files.py /path/to/folder new_name
That's it! All your files should be automatically renamed ✨
Feel free to reach out if you have any questions! You can also find me on Github, LinkedIn, and Instagram.
Top comments (0)