How to store a variable when a script is executing for next time execution?

Jussi Piitulainen jpiitula at ling.helsinki.fi
Thu Jun 6 08:46:06 EDT 2013


Avnesh Shakya writes:

> I am running a python script and it will create a file name like
> filename0.0.0 and If I run it again then new file will create one
> more like filename0.0.1...... my code is-
> 
> i = 0
> for i in range(1000):
>     try:
>         with open('filename%d.%d.%d.json'%(0,0,i,)): pass
>         continue
>     except IOError:
>         dataFile = file('filename%d.%d.%d.json'%(0,0,i,), 'a+')
>         break
>
> But It will take more time after creating many files, So i want to
> store value of last var "i" in a variable so that when i run my
> script again then I can use it. for example- my last created file is
> filename0.0.27 then it should store 27 in a variable and when i run
> again then new file should be created 0.0.28 according to last value
> "27", so that i could save time and it can create file fast..

You could get a list of all filenames that match the pattern. Extract
the last components as numbers, and add 1 to the maximum.

  i = 1 + max(int(name.split('.')[-1])
              for name in glob.glob('filename.0.0.*))

That assumes that there already is at least one such file and all such
files have a last component that can be parsed as an int. Take an
appropriate amount of care.

Or you could also create a file, say lastname.0.0.31, to track the
name, and when you find it there, create filename.0.0.32 and replace
lastname.0.0.32; panic if there is more than one lastname.0.0.*, or
fewer than one.

Or as above but track with nextname.0.0.31 to create filename.0.0.31
and replace the tracking name with nextname.0.0.32 for the next file.

Or save the number somewhere else.



More information about the Python-list mailing list