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

时间:2019-04-05 16:41:21

标签: python python-3.x

我正在尝试通过将其打开为r +模式来在python文本文件中执行读取和写入操作。但是,不管我在执行写入操作(例如“ fo.write(“随机””)之前读取了多少个字符(例如“ fo.read(5)”), )'),将文本写入/附加在文件末尾。

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

我希望将要写入的文本(在本例中为“随机”)向前写入第6个字符,但在文本文件的末尾写入/附加了该字符。对此行为的可能解释是什么?

1 个答案:

答案 0 :(得分:2)

这肯定看起来像是个错误。

一种解决方法是在编写之前明确查找当前文件位置:

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进行参考和讨论,尽管该链接的问题与Python 2有关,在Python 2中,同一代码的行为不同(写操作不执行任何操作或产生OSError)。