Andrew  Vorobyov
Andrew Vorobyov

Reputation: 142

Strange characters in the begining of the file after writing in Python

I want to do a lot of boring C# code replacements automatically through a python script. I read all lines of the file, transform them, truncate the whole file, write new strings and close it.

f = open(file, 'r+')
text = f.readlines()
# some changes
f.truncate(0)
for line in text:
    f.write(line)
f.close()

All my changes are written. But some strange characters in the beginning of the file appear. I don't know how to avoid them. Even if I open with encoding='utf-8-sig' it doesn't help.

I tried truncate whole file besides the 1st line like this:

import sys
f.truncate(sys.getsizeof(text[0]))
for index in range(1, len(text), 1):
    f.write(text[index])

But in this case more than 1st line is writing instead of only first line.

EDIT I tried this:

f.truncate(len(text[0]))
for index in range(1, len(text), 1):
    f.write(text[index])

And the first line has written correct but next one with the same issue. So I think this characters from the end of the file and I try to write after them.

Upvotes: 4

Views: 2593

Answers (1)

Shashank Singh
Shashank Singh

Reputation: 657

f=open(file, 'r+')
text = f.readlines() # After reading all the lines, the pointer is at the end of the file.
# some changes
f.seek(0) # To bring the pointer back to the starting of the file.
f.truncate() # Don't pass any value in truncate() as it means number of bytes to be truncated by default size of file.
for line in text:
    f.write(line)
f.close()

Check out this Link for more details.

Upvotes: 5

Related Questions