I've written a code in Python that goes through the file, extracts all numbers, adds them up. I have to now write the 'total' (an integer) at a particular spot in the file that says something something something...Total: __00__ something something
.
I have to write the total that I have calculated exactly after the Total: __
part which would mean the resulting line would change to, for example: something something something...Total: __35__ something something
.
So far I have this for the write part:
import re
f1 = open("filename.txt", 'r+')
for line in f1:
if '__' in line and 'Total:' in line:
location = re.search(r'__', line)
print(location)
This prints out: <_sre.SRE_Match object; span=(21, 23), match='__'>
So it finds the '__' at position 21 to 23, which means I want to insert the total at position 24. I know I have to somehow use the seek()
method to do this. But I have tried and failed several times. Any suggestions would be appreciated.
Important: The original contents of the file are to be preserved as it is. Only the total changes -- nothing else.
If the file is not particularly large, you can read its contents in memory as a string (or a list of lines), do the replacement and write the contents back. Something like this:
total = 'Total: __{}__'.format(12345)
with open(filename, 'r+') as f:
contents = f.read().replace('Total: __00__', total)
f.seek(0)
f.truncate()
f.write(contents)