Python: How do I create sequential file names?

后端 未结 3 1370
星月不相逢
星月不相逢 2020-12-06 08:11

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.

3条回答
  •  时光取名叫无心
    2020-12-06 08:28

    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

提交回复
热议问题