当前位置:  开发笔记 > 编程语言 > 正文

为什么readline()将文件指针放在Python的文件末尾?

如何解决《为什么readline()将文件指针放在Python的文件末尾?》经验,为你挑选了1个好方法。

我有一个代码,应该写一个文本文件,然后用一些其他东西替换一行中的一些文本.

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()不能像我想象的那样工作,所以请告诉我如何阅读文本的某些行并将内容写入特定行.



1> Martijn Piet..:

默认情况下,写入始终发生在文件末尾.调用file.readline()不会改变此行为,尤其是因为readline()调用可以使用缓冲区来读取更大的块.

您可以通过file.seek()显式使用来覆盖到行的末尾; 你只需阅读该行,你知道长度,寻求到这一点:

x = file.readline()
file.seek(len(x), 0)
file.write(text) #write the text

请注意,您无法插入线条或轻松替换线条.文件是单个字节的流,而不是行,因此如果您以10个字符(包括换行符)的行写入,则只能用10个其他字符替换该行.更长或更短的线路在这里不起作用; 您只是要替换文件中较少或更多的字符,并部分替换一行或覆盖(部分)下一行.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有