如何编辑文件的最后几个字符?

时间:2015-09-11 01:41:39

标签: python-2.5

我正在制作一个小程序来跟踪程序的执行流程。我有一些文件有源代码,有些文件没有。对于没有源文件发生的调用,我试图计算它们并将该数字添加到输出行的末尾。

根据我的理解,我将光标从末尾定位3个字符,然后当我将output写入myfile时,它应该覆盖前3个字符。但是当我查看文件时,这3个字符只会附加到最后。

with open("C:\\Windows\\Temp\\trace.html", "a+") as myfile:
                if hasNoSource and not fileHasChanged:
                    myfile.seek(-3,2)
                    output = line
                else:
                    self.noSourceCallCount = 0
                myfile.write(output)
            return self.lineHook

2 个答案:

答案 0 :(得分:1)

" +" mode为打开for append模式,seek()的任何更改都将由next write()重置。使用" r +"模式。

答案 1 :(得分:0)

带有inplace选项的fileinput模块允许你修改你的文件,但如果一切都搞得一团糟,一定要备份

import fileinput,sys,re
line_count=0
for line in open(my_file): 
    line_count+=1                  # count total lines in file
f=fileinput.input(my_file,inplace=True)
for line in f:
    line_count-=1      #when iterating through every line decrement line_count by 1
    if line_count==0:
        line=re.sub("...$",<replacement>,line) #use regex to replace first three characters in the last line
        sys.stdout.write(line) #print line to sys.stdout which will automatically make the changes to this line in file.
    else:
        sys.stdout.write(line)