python文本文件中“r+”模式下的意外读/写行为

2024-09-28 19:31:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过将python文本文件打开到r+模式来执行读写操作。但是,不管我读了多少个字符(比如“预读(5) '),然后再执行写入操作(例如“fo.写入(“random”),文本写入/附加在文件末尾。你知道吗

fo = open("C:/Users/Dell/Desktop/files/new.txt",'r+')
fo.read(5)
fo.write('random')
fo.close()

我希望正在写入的文本(在本例中为“random”)是从第6个字符开始写入的,但却被写入/附加在文本文件的末尾。这种行为的可能解释是什么?你知道吗


Tags: 文件文本new模式randomfilesopenusers
1条回答
网友
1楼 · 发布于 2024-09-28 19:31:28

这绝对像个虫子。你知道吗

解决方法是在写入之前显式查找当前文件位置:

fo = open("C:/Users/Dell/Desktop/files/new.txt",'r+')
fo.read(5)
fo.seek(fo.tell())
fo.write('random')
fo.close()

编辑:正如@Blckknght所指出的,这是一个源于Windows的C级实现的已知问题。您可以参考Beginner Python: Reading and writing to the same file以获得参考和讨论,尽管这个链接的问题与python2有关,在python2中,相同代码的行为是不同的(写操作要么什么也不做,要么产生一个OSError)。你知道吗

相关问题 更多 >