微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

我希望正在写入的文本(在此示例中为“ random”)将向前写入第6个字符,但会在文本文件的末尾写入/附加.对此行为的可能解释是什么?

最佳答案
这肯定看起来像个错误.

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

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).

原文地址:https://www.jb51.cc/python/533286.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐