'中的意外读/写行为;r+';python文本文件中的模式
我试图通过将python文本文件打开到r+模式来执行读写操作。但是,无论我在执行写入操作(例如“fo.write(“random”)之前读取了多少个字符(例如“fo.read(5)”),文本都会写入/追加到文件的末尾'中的意外读/写行为;r+';python文本文件中的模式,python,python-3.x,Python,Python 3.x,我试图通过将python文本文件打开到r+模式来执行读写操作。但是,无论我在执行写入操作(例如“fo.write(“random”)之前读取了多少个字符(例如“fo.read(5)”),文本都会写入/追加到文件的末尾 fo = open("C:/Users/Dell/Desktop/files/new.txt",'r+') fo.read(5) fo.write('random') fo.close() 我希望正在写入的文本(在本例中为“随机”)将向前写入第6个字符,但却被写入/追加到文本文件
fo = open("C:/Users/Dell/Desktop/files/new.txt",'r+')
fo.read(5)
fo.write('random')
fo.close()
我希望正在写入的文本(在本例中为“随机”)将向前写入第6个字符,但却被写入/追加到文本文件的末尾。这种行为的可能解释是什么?这看起来确实像一个bug 解决方法是在写入之前显式查找当前文件位置:
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级实现的已知问题。您可以参考以获取参考和讨论,尽管该链接问题涉及Python 2,其中相同代码的行为是不同的(编写过程要么不执行任何操作,要么生成
OSError
)。我相信这是有文档记录的(错误)行为。在某些平台上,如果您同时读取
和写入
一个文件而不在两者之间放置搜索
,则会发生什么情况,这是未定义的。谢谢。我已经找到了之前的讨论,并相应地更新了我的答案。我没有将这个问题标记为重复问题,只是因为这个问题是针对Python2的,在Python2中,行为是不同的。