python open('file','r+') 给出奇怪的结果

5 投票
1 回答
3871 浏览
提问于 2025-04-17 12:16

看了一些帖子后,似乎可以用'r+'或'w+'模式同时打开一个文件进行读和写。但是每次我尝试使用这些模式时,总是会出现奇怪的结果:

  1. 如果我用'r+'模式,先调用file.read(),再调用file.write('str'),会出现一个错误:“IOError: [Errno 0] Error”。
  2. 如果我用'r+'模式,先调用file.write('str'),再调用file.read(),返回的内容会很意外,而且非常长(看起来像是某个对象的内部内容)。
  3. 如果我用'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版本中这个问题已经修复了。

撰写回答