On Sep 23, 7:02 pm, [EMAIL PROTECTED] wrote: > I have a simulation that runs many times with different parameters, > and I want to aggregate the output into a single file with one rub: I > want a header to be written only the first time. My program looks a > bit like this: > > def main(): > for param in range(10): > simulate(param) > > def simulate(parameter): > 'Lots of code followed by: > with open(summaryFn, 'ab') as f: > writer = csv.writer(f) > writer.writerow(header)
def simulate(parameter): 'Lots of code followed by: with open(summaryFn, 'ab') as f: writer = csv.writer(f) writer.writerow(header) writer.writerow(Sigma) > writer.writerow(Sigma) > > If I can sense that the file is being created in the first iteration, > I can then use an if statement to decide whether or not I need to > write the header. Question: how can I tell if the file is being > created or if this its the first iteration? It's unrealistic to test > the value of the parameter as in the real problem, there are many > nested loops in main, and the bounds on the loop indices may change. > > Thanks in advance for your assistance > > Thomas Philips You can use he os.path module: appending = os.path.exists(summaryFn) with open(summaryFn, 'ab') as f: writer = ... if not appending: writer.writerow(header) writer.writerow(Sigma) But if you only write to the file in one code location, you can set a flag. HTH -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list