我有一个代码,应该写一个文本文件,然后用一些其他东西替换一行中的一些文本.
def read(text): file = open('File.txt', 'r+') #open the file for reading and writing x = file.readline() # read the first line of the file file.seek(0, 0) #put the pointer back to the begining file.readline() #skip one line file.write(text) #write the text file.close() #close the file read('ABC')
一开始没关系.它读取第一行并设置指向文件开头的指针.但是当它应该读取一行并将指针放在第二行时,它将它放在文件的末尾.如果我将它分配给变量,它只读取一行,但它仍然将指针设置在文件的末尾.
显然readline()
不能像我想象的那样工作,所以请告诉我如何阅读文本的某些行并将内容写入特定行.
默认情况下,写入始终发生在文件末尾.调用file.readline()
不会改变此行为,尤其是因为readline()
调用可以使用缓冲区来读取更大的块.
您可以通过file.seek()
显式使用来覆盖到行的末尾; 你只需阅读该行,你知道长度,寻求到这一点:
x = file.readline() file.seek(len(x), 0) file.write(text) #write the text
请注意,您无法插入线条或轻松替换线条.文件是单个字节的流,而不是行,因此如果您以10个字符(包括换行符)的行写入,则只能用10个其他字符替换该行.更长或更短的线路在这里不起作用; 您只是要替换文件中较少或更多的字符,并部分替换一行或覆盖(部分)下一行.