如何编辑文件的最后几个字符?
How to edit the last few characters of a file?
我正在制作一个小程序来跟踪程序的执行流程。我有一些文件有源代码,有些没有。对于在没有源文件的文件中发生的调用,我试图对它们进行计数并将该数字添加到输出行的末尾。
据我所知,我将光标定位在距末尾 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
"a+" 模式为附加模式打开,seek() 的任何更改都将由下一个 write() 重置。使用 "r+" 模式。
带有 inplace 选项的文件输入模块允许您修改文件,但如果一切都乱套了,请务必进行备份
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)
我正在制作一个小程序来跟踪程序的执行流程。我有一些文件有源代码,有些没有。对于在没有源文件的文件中发生的调用,我试图对它们进行计数并将该数字添加到输出行的末尾。
据我所知,我将光标定位在距末尾 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
"a+" 模式为附加模式打开,seek() 的任何更改都将由下一个 write() 重置。使用 "r+" 模式。
带有 inplace 选项的文件输入模块允许您修改文件,但如果一切都乱套了,请务必进行备份
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)