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

时间:2012-02-03 15:11:58

标签: python file file-io

在阅读了一些帖子后,您似乎可以使用' r +'模式打开文件进行阅读和书写。或者' w +'。但是,尝试使用这些模式总会给我带来奇怪的结果:

  1. 如果我使用' r +',请调用file.read(),然后调用file.write(' str'), " IO错误:[Errno 0]错误"
  2. 如果我使用' r +',请调用file.write(' str'),然后调用file.read(), 它将返回意外和非常长的内容(看起来像里面的内容 一些对象)
  3. 如果我使用' w +',调用file.read()将返回空字符串
  4. 我尝试做的是打开文件,阅读内容,修改内容并回写。目前我正在打开“' r”,更改内容,然后再次使用' w'并回信。这是一个很好的方式吗?

    http://snipt.org/zglJ0

    有一个例子

    我使用的是窗口7和python 2.7.2

1 个答案:

答案 0 :(得分:5)

在读取和写入以更新模式打开的文件之间切换时,您必须flush()。或者我认为你也可以seek()。这是由Python 2.x中Windows文件实现中的一些奇怪行为引起的;他们把它固定在3.x。