Char
Char

Reputation: 1735

How to increment variable every time script is run in Python?

I have a Python script that I want to increment a global variable every time it is run. Is this possible?

Upvotes: 5

Views: 11971

Answers (4)

abhi
abhi

Reputation: 75

example:-

import os
if not os.path.exists('log.txt'):
    with open('log.txt','w') as f:
        f.write('0')
with open('log.txt','r') as f:
    st = int(f.read())
    st+=1 
with open('log.txt','w') as f:
    f.write(str(st))

Each time you run your script,the value inside log.txt will increment by one.You can make use of it if you need to.

Upvotes: 2

zwer
zwer

Reputation: 25769

Pretty easy to do with an external file, you can create a function to do that for you so you can use multiple files for multiple vars if needed, although in that case you might want to look into some sort of serialization and store everything in the same file. Here's a simple way to do it:

def get_var_value(filename="varstore.dat"):
    with open(filename, "a+") as f:
        f.seek(0)
        val = int(f.read() or 0) + 1
        f.seek(0)
        f.truncate()
        f.write(str(val))
        return val

your_counter = get_var_value()
print("This script has been run {} times.".format(your_counter))

# This script has been run 1 times
# This script has been run 2 times
# etc.

It will store in varstore.dat by default, but you can use get_var_value("different_store.dat") for a different counter file.

Upvotes: 6

pointerless
pointerless

Reputation: 753

For a code example:

with open("store.txt",'r') as f: #open a file in the same folder
    a = f.readlines()            #read from file to variable a
#use the data read
b = int(a[0])                    #get integer at first position
b = b+1                          #increment
with open("store.txt",'w') as f: #open same file
    f.write(str(b))              #writing a assuming it has been changed

The a variable will I think be a list when using readlines.

Upvotes: 1

hdante
hdante

Reputation: 8020

Yes, you need to store the value into a file and load it back when the program runs again. This is called program state serialization or persistency.

Upvotes: 1

Related Questions