当前位置: 首页 > 面试题库 >

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

符鸿光
2023-03-14
问题内容

我有这个代码片段,我正在尝试使用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

我在这里想念什么吗?


问题答案:

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

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

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

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

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



 类似资料:
  • 目前我正在测试PhpStorm IDE。它真的很棒,除了一个功能。它不会从文件末尾删除空行。现在删除不需要的空格,但末尾的空行不会删除。 这对我来说真的很烦人。我能改变这种行为吗?

  • 所以我试着从一个字符串中使用getBytes,我知道如果它遇到一个不能变成真实数据的字符,它会抛出一个UnsupportedEncodingException。我添加了java.io来提供异常,但是当我把它放到try catch语句中时,我得到了“UnsupportedEncodingException的不可到达的catch块。此异常从不从try语句体中引发" 这是我的确切结构。myCharact

  • 在使用boto3 for python实现aws textract时。 代码: 下面是aws的凭证和配置文件 我得到了一个例外: 我对AWS textract有点陌生,任何帮助都将不胜感激。

  • 问题内容: 在我当前的项目中,我们总是在Java源文件的末尾插入一个空的新行。我们还使用CheckStyle(具有错误级别)来强制执行此操作。 我一直在寻找这个主题很长时间,但是不幸的是,我找不到任何令人信服的理由。似乎其他开发人员对此无动于衷,因为他们只是选中了Eclipse formatter中的一个复选框,并且它是自动完成的。但是我仍然不知道为什么需要它,为什么它很重要。所以我的问题是: 为

  • 我有一个函数,它将被传递一个空指针。此指针可以是int、char或float。我知道通过关联值将传递给我的数据类型。例如,下面是我的函数的外观: 如果传递给我的void指针最初是一个char类型,我将它转换回char类型,有没有办法确定与该指针关联的字节数?例如,如果我的函数按如下方式调用: 我将void指针转换回char指针 有没有什么方法可以计算出使用了多少字节?我可能需要搜索空字符并计算它与

  • 我正在使用Goland来编写我的grpc应用程序。生成我的原型文件后,文件末尾不存在尾随换行符。有没有办法在 IDE 中启用此功能?