从文件末尾查找引发不支持的异常

发布于 2021-01-29 19:36:03

我有这个代码片段,我正在尝试使用python从文件末尾向后搜索:

f=open('D:\SGStat.txt','a');
    f.seek(0,2)
    f.seek(-3,2)

运行时将引发以下异常:

f.seek(-3,2)
io.UnsupportedOperation: can't do nonzero end-relative seeks

我在这里想念什么吗?

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    从Python
    3.2及更高版本的文档中:

    在文本文件中(那些b在模式字符串中不带a开头的文件),仅允许相对于文件开头的查找(查找到文件末尾为的例外seek(0, 2))。

    因此,您可以将程序更改为:

    f = open('D:\SGStat.txt', 'ab')
    f.seek(0, 2)
    f.seek(-3, 2)
    

    但是,您应该注意,在b读取或写入文本时添加标志会产生意想不到的后果(例如,使用多字节编码),并且实际上会更改读取或写入的数据类型。有关问题原因的更详尽讨论以及不需要添加b标志的解决方案



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看