【发布时间】:2009-04-23 22:25:29
【问题描述】:
运行以下python代码时:
>>> f = open(r"myfile.txt", "a+")
>>> f.seek(-1,2)
>>> f.read()
'a'
>>> f.write('\n')
我得到以下(有用的)异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 0] Error
使用“r+”打开时也会发生同样的情况。
这应该失败吗?为什么?
编辑:
- 显然,这只是一个示例,而不是我实际尝试执行的内容。我的实际目标是在添加新行之前验证文件是否以“\n”结尾,或者添加一个。
- 我在 Windows XP 下工作,它们的问题在 Python 2.5 和 Python 2.6 中都存在。
-
我通过再次调用 seek() 设法绕过了这个问题:
f = open(r"myfile.txt", "a+")
f.seek(-1,2)
f.read()
'一个'
f.seek(-10,2)
f.write('\n')
第二次搜索调用的实际参数似乎无关紧要。
【问题讨论】:
-
您使用的是什么操作系统和python版本?这似乎适用于 Linux 2.6.17 下的 Python 2.4.3。
-
这正是您想要做的,还是简化?如果这是手头的任务,为什么不直接以“a”打开,然后调用 f.write,而无需干预搜索?
-
另外(对 Lance),它在 Windows XP 上的 Python 2.5 中根本不起作用。
-
好的,我在 Windows XP Pro 下使用 Python 2.4.3 看到了同样的错误。嗯...