python open('file','r+') 给出奇怪的结果
看了一些帖子后,似乎可以用'r+'或'w+'模式同时打开一个文件进行读和写。但是每次我尝试使用这些模式时,总是会出现奇怪的结果:
- 如果我用'r+'模式,先调用file.read(),再调用file.write('str'),会出现一个错误:“IOError: [Errno 0] Error”。
- 如果我用'r+'模式,先调用file.write('str'),再调用file.read(),返回的内容会很意外,而且非常长(看起来像是某个对象的内部内容)。
- 如果我用'w+'模式,调用file.read()会返回一个空字符串。
我想做的是打开一个文件,读取内容,修改它,然后再写回去。目前我都是先用'r'模式打开文件,修改内容后,再用'w'模式重新打开并写回去。这样做合适吗?
这里有个例子:http://snipt.org/zglJ0
我使用的是Windows 7和Python 2.7.2
1 个回答
5
当你在一个以更新模式打开的文件中切换读写时,你需要使用 flush()
。或者我觉得你也可以用 seek()
。这是因为在Python 2.x中,Windows文件的处理有些奇怪的行为;在3.x版本中这个问题已经修复了。