Detecting the first time I open/append to a file

Arnaud Delobelle arnodel at googlemail.com
Tue Sep 23 20:25:53 CEST 2008


On Sep 23, 7:02 pm, tkp... at hotmail.com 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




More information about the Python-list mailing list