鱼C论坛

 找回密码
 立即注册
查看: 1508|回复: 5

[已解决]seek报错

[复制链接]
发表于 2020-9-18 20:28:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> j = open('D:/python-3.8.5/文档1.txt')
>>> list(j)
['qtywuwdgwdedvedkdj']
>>> j.seek(3,2)
Traceback (most recent call last):
  File "<pyshell#53>", line 1, in <module>
    j.seek(3,2)
io.UnsupportedOperation: can't do nonzero end-relative seeks
>>> j = open('D:/python-3.8.5/文档1.txt',encoding='utf-8')
>>> j.seek(4,2)
Traceback (most recent call last):
  File "<pyshell#55>", line 1, in <module>
    j.seek(4,2)
io.UnsupportedOperation: can't do nonzero end-relative seeks
>>> j.read()
'qtywuwdgwdedvedkdj'
>>> j.seek(4,2)
Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    j.seek(4,2)
io.UnsupportedOperation: can't do nonzero end-relative seeks
#为什么seek()始终会报错呢,加和不加encoding=‘utf-8’都会报错
最佳答案
2020-9-18 20:47:30
本帖最后由 sunrise085 于 2020-9-18 20:48 编辑

文件打开方式不对
不是以b方式打开的文件不允许从末尾seek,也就是说seek的第二个参数不允许是2
open打开的时候写成 j = open('D:/python-3.8.5/文档1.txt','rb') 试试

再者,你从文件末尾seek,第一个参数应该是负数才对啊。从末尾再向后数,还有内容吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-18 20:32:26 | 显示全部楼层
你看,j里面只有一个元素,这个元素就是字符串,只有一个的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-18 20:34:04 | 显示全部楼层
['qtywuwdgwdedvedkdj']
这里有一个引号,是一个字符串,不可以用seek直接提出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-18 20:47:30 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-9-18 20:48 编辑

文件打开方式不对
不是以b方式打开的文件不允许从末尾seek,也就是说seek的第二个参数不允许是2
open打开的时候写成 j = open('D:/python-3.8.5/文档1.txt','rb') 试试

再者,你从文件末尾seek,第一个参数应该是负数才对啊。从末尾再向后数,还有内容吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-18 21:01:56 | 显示全部楼层
sunrise085 发表于 2020-9-18 20:47
文件打开方式不对
不是以b方式打开的文件不允许从末尾seek,也就是说seek的第二个参数不允许是2
open打开 ...

为什么是'rb',不是‘r'?
小甲鱼那个扩展阅读
打开模式        执行操作
'r'        以只读方式打开文件(默认)
'w'        以写入的方式打开文件,会覆盖已存在的文件
'x'        如果文件已经存在,使用此模式打开将引发异常
'a'        以写入模式打开,如果文件存在,则在末尾追加写入
'b'        以二进制模式打开文件
't'        以文本模式打开(默认)
'+'        可读写模式(可添加到其他模式中使用)
'U'        通用换行符支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-18 21:21:55 | 显示全部楼层
3216207773 发表于 2020-9-18 21:01
为什么是'rb',不是‘r'?
小甲鱼那个扩展阅读
打开模式        执行操作

这些打开方式是可以组合的
而且我在4楼说过原因了,以r打开的是不能从末尾seek的,只有以b打开的才可以从末尾seek
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 14:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表