seek报错
>>> 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’都会报错 你看,j里面只有一个元素,这个元素就是字符串,只有一个的 ['qtywuwdgwdedvedkdj']
这里有一个引号,是一个字符串,不可以用seek直接提出 本帖最后由 sunrise085 于 2020-9-18 20:48 编辑
文件打开方式不对
不是以b方式打开的文件不允许从末尾seek,也就是说seek的第二个参数不允许是2
open打开的时候写成 j = open('D:/python-3.8.5/文档1.txt','rb') 试试
再者,你从文件末尾seek,第一个参数应该是负数才对啊。从末尾再向后数,还有内容吗? sunrise085 发表于 2020-9-18 20:47
文件打开方式不对
不是以b方式打开的文件不允许从末尾seek,也就是说seek的第二个参数不允许是2
open打开 ...
为什么是'rb',不是‘r'?
小甲鱼那个扩展阅读
打开模式 执行操作
'r' 以只读方式打开文件(默认)
'w' 以写入的方式打开文件,会覆盖已存在的文件
'x' 如果文件已经存在,使用此模式打开将引发异常
'a' 以写入模式打开,如果文件存在,则在末尾追加写入
'b' 以二进制模式打开文件
't' 以文本模式打开(默认)
'+' 可读写模式(可添加到其他模式中使用)
'U' 通用换行符支持 3216207773 发表于 2020-9-18 21:01
为什么是'rb',不是‘r'?
小甲鱼那个扩展阅读
打开模式 执行操作
这些打开方式是可以组合的
而且我在4楼说过原因了,以r打开的是不能从末尾seek的,只有以b打开的才可以从末尾seek
页:
[1]