I want my program to be able to write files in a sequential format, ie: file1.txt, file2.txt, file3.txt. It is only meant to write a single file upon execution of the code. It can't overwrite any existing files, and it MUST be created. I'm stumped.
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.
Python supports writing files by default, no special modules are required. You can write a file using the . write() method with a parameter containing text data. Before writing data to a file, call the open(filename,'w') function where filename contains either the filename or the path to the filename.
In sequential access, you access the File data from the beginning of the File to the end of the File. If you need a piece of data that is stored near the end of the file then you have to go through all the data before it i.e. you have to read all the data and you cannot jump directly to the desired data.
To rename files in Python, use the rename() method of the os module. The parameters of the rename() method are the source address (old name) and the destination address (new name).
Two choices:
Counter File.
Check the directory.
Counter File.
with open("thecounter.data","r") as counter:
count= int( counter.read() )
count += 1
Each time you create a new file, you also rewrite the counter file with the appropriate number. Very, very fast. However, it's theoretically possible to get the two out of synch. in the event of a crash.
You can also make the counter file slightly smarter by making it a small piece of Python code.
settings= {}
execfile( "thecounter.py", settings )
count = settings['count']
Then, when you update the file, you write a little piece of Python code: count = someNumber
. You can add comments and other markers to this file to simplify your bookkeeping.
Check the directory.
import os
def numbers( path ):
for filename in os.listdir(path):
name, _ = os.path.splitext()
yield int(name[4:])
count = max( numbers( '/path/to/files' ) )
count += 1
Slower. Never has a synchronization problem.
Or you could append the current system time to make unique filenames...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With