用Python编写后文件开头的奇怪字符

时间:2018-02-19 09:11:08

标签: python windows file fwrite

我想通过python脚本自动执行大量无聊的C#代码替换。我读了文件的所有行,转换它们,截断整个文件,写新字符串并关闭它。

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

我写的所有更改。但是文件开头会出现一些奇怪的字符。我不知道如何避免它们。即使我用encoding='utf-8-sig'打开它也无济于事。

我尝试截断第一行之外的整个文件,如下所示:

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

但在这种情况下,第一行不仅仅是第一行而是写作。

修改 我试过这个:

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

第一行写得正确,但下一行有同样的问题。所以我认为这个字符来自文件的末尾,我试着在它们之后写。

1 个答案:

答案 0 :(得分:1)

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()

有关详细信息,请查看此Link