How do you create a file name with an incrementing number in Python?
To create an incrementing file name in Python, run a while loop that checks the existence of a file, and if it exists, use Regex to modify the file name by replacing the integer at the end of the file with the next number. Continue looping until the file name does not exist in the destination folder.
Here’s an example Python script that demonstrates how this can easily be done:
As you can see from the above code the function I have created is labelled
file_name_increment
and contains 5 parameters:
file_path
is the full file path explored,
start_idx
is the starting index number to begin incrementing the file (if
file_path
is found to already exist),
prepend_str
is the string being prepended before the incrementing digit (default is
"-"
),
append_str
is the string being appended after the incrementing digit (default is an empty string) and
sep
is the character defined to separate the file name from the extension (default is
"."
).
Example
Here is an example executing this function in a script. Assume the
temp
folder contains the following files:
-
test.txt
-
test-1.txt
Assume further that the function above is placed into a file labelled
main.py
.
>>> import os
>>> import main
>>> main.file_name_increment(os.join(os.getcwd(), "temp", "test.txt"), 1)
'/Users/rds/PycharmProjects/ScriptEverything/temp/temp-2.txt'
As you can see from the REPL result the output is correct and generates the next available file name according to the path and increment.
Summary
Checking the existence of a file in a directory is common when you are creating files or scraping files from a website. However, to ensure you are not writing over existing files, it is prudent to check if the file already exists before writing or renaming. The above script is what I have used when downloading files from scraping websites where the downloaded file contains the same file name, i.e.
image.png
.
By using this script in your coding you will help to prevent naming clashes with your files.
Find out more about incrementing in Python here .