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.
Here is the way I implemented this:
import os
import glob
import re
#we need natural sort to avoid having the list sorted as such:
#['./folder1.txt', './folder10.txt', './folder2.txt', './folder9.txt']
def sorted_nicely(strings):
"Sort strings the way humans are said to expect."
return sorted(strings, key=natural_sort_key)
def natural_sort_key(key):
import re
return [int(t) if t.isdigit() else t for t in re.split(r'(\d+)', key)]
#check if folder.txt exists
filename = "folder.txt" #default file name
#if it does find the last count
if(os.path.exists(filename)):
result = sorted_nicely( glob.glob("./folder[0-9]*.txt"))
if(len(result)==0):
filename="folder1.txt"
else:
last_result = result[-1]
number = re.search( "folder([0-9]*).txt",last_result).group(1)
filename="folder%i.txt"%+(int(number)+1)
Thanks to Darius Bacon for the natural sort functions(see his answer here: https://stackoverflow.com/a/341730)
Sorry if the above code is fugly