>> f.seek(-1,2) -6ren">
gpt4 book ai didi

python - seek(),然后是 read(),然后是 python 中的 write()

转载 作者:太空狗 更新时间:2023-10-29 21:48:02 25 4
gpt4 key购买 nike

当运行以下 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+”打开时会发生同样的事情。

这应该会失败吗?为什么?

编辑:

  1. 显然,这只是一个示例,并不是我实际要执行的操作。我的实际目标是在添加新行之前验证文件是否以“\n”结尾或添加一个。
  2. 我在 Windows XP 下工作,Python 2.5 和 Python 2.6 都存在问题。
  3. 我通过再次调用 seek() 设法绕过了这个问题:

    f = open(r"myfile.txt", "a+")
    f.seek(-1,2)
    f.read()
    'a'
    f.seek(-10,2)
    f.write('\n')

第二次搜索调用的实际参数似乎无关紧要。

最佳答案

这似乎是 Windows 特有的问题 - 请参阅 http://bugs.python.org/issue1521491对于类似的问题。

更好的是,在 http://mail.python.org/pipermail/python-bugs-list/2005-August/029886.html 给出并解释了解决方法, 插入:

f.seek(f.tell())

在 read() 和 write() 调用之间。

关于python - seek(),然后是 read(),然后是 python 中的 write(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com