views:

148

answers:

2

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.

+2  A: 

Two choices:

  1. Counter File.

  2. 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.

S.Lott
http://stackoverflow.com/questions/2401235/python-help-with-counters-and-writing-files
badp
+1  A: 

Or you could append the current system time to make unique filenames...

ultrajohn