Python调用seek(pos,mode)方法报错Can‘t do nonzero cur-relative seeks

在Python中,使用IO操作的`seek(pos, mode)`方法时,遇到`OSError: Can't do nonzero cur-relative seeks`错误。该错误通常发生在尝试对文本文件进行非零偏移的当前相对寻址,而未以二进制模式('b')打开文件。解决方案是确保在使用`seek(pos, 1)`或`seek(pos, 2)`时以二进制模式打开文件。Python3对此进行了更严格的检查,而在Python2中则不会抛出此类错误。" 138189511,9232824,SAP DMS文档操作:审批与删除指南,"['SAP_DMS', 'SAP']
摘要由CSDN通过智能技术生成

在Python中IO操作调用seek(pos,mode)方法时,出现异常错误:OSError:Can't do nonzero cur-relative seeks其示例代码如下:

from io import StringIO

def demo():
    str_io = StringIO()
    str_io.write("Python是世界上最好的语言")
    str_io.seek(2,1)

demo()

上述这段代码,使用的是StringIO调用seek(2,1)方法,一般情况下如果操作的是一段字符串的话,建议尽量不要使用seek(pos,1|2)方法。虽然StringIO调用seek(pos,1|2)方法可能会报错,然而去寻找这个错误的解决方法是没有意义的(因为使用StringIO调用seek(pos,1|2)方法的使用场景的频率是比较低的),更多的时候,使用seek(pos,1|2)方法报错关注更多的是对于文件的操作,示例代码如下:

from io import StringIO

def demo():
    f=open("E:\\file.txt","r")
    f.seek(2,1) #从上一次偏移到的位置再偏移2个长度单位
    print(f.tell())

demo()

执行上述代码会报错:

io.UnsupportedOperation: can't do nonzero cur-relative seeks
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值