【问题标题】:Python -- read and append to the filePython——读取并附加到文件
【发布时间】:2014-06-01 19:13:15
【问题描述】:

我有以下 Python 代码:

with open('helper.txt', 'a+') as f:
    lines = f.read().splitlines()
    for line in lines:
        print line
    f.write('new_line \n')

它第一次创建并将“new_line \n”写入“helper.txt”文件,但第二次由于某种原因失败:

Traceback (most recent call last):
new_line
  File "E:/work/projects/src/helper/main.py", line 50, in main
    f.write('new_line \n')
IOError: [Errno 0] Error

为什么?我究竟做错了什么?我该如何解决?

顺便说一句,我使用的是 Python 2.7.6。

【问题讨论】:

  • 顺便说一句,您的代码可以在 linux 上运行。此行为可能特定于 Windows。文档提到与mode=a+ 存在差异。
  • 另外,你可以去掉f.read().splitlines(),直接做for line in f:...

标签: python windows python-2.7


【解决方案1】:

你需要寻找,这行得通:

import os

with open('helper.txt', 'a+') as f:
    f.seek(0, os.SEEK_SET)
    for line in f:
        print line.strip()
    f.seek(0, os.SEEK_END)
    f.write('new_line \n')

【讨论】:

  • 为什么这个模式被命名为“a+”(追加)呢?
  • lines = f.read().splitlines(); for line in linesfor line in f 顺便说一句,除了前者为大文件消耗大量内存。
  • @Adam Smith 是的,但是为什么我需要在这种情况下手动使用搜索?
  • for line in f: 将输出换行两次,而 splitline() 只输出一次。不会输出相同的。
  • @MarinovIván for for line in f: print line.strip()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2022-12-05
相关资源
最近更新 更多