鱼C论坛

 找回密码
 立即注册
查看: 1663|回复: 7

[已解决]求助关于seek()函数的用法,为什么会报错

[复制链接]
发表于 2018-4-4 09:34:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xue11 于 2018-4-4 10:08 编辑

代码如下:
>>> f = open('C:\\Users\\songyuxue\\Desktop\\新建文件夹 (2)\\record.txt')
>>> f.read()
'小客服:小甲鱼,今天有客户问你有没有女朋友?\n小甲鱼:咦??\n小客服:我跟她说你有女朋友了!\n小甲鱼:。。。。。。\n小客服:她让你分手后考虑下她!然后我说:"您要买个优盘,我就帮您留意下~"\n小甲鱼:然后呢?\n小客服:她买了两个,说发一个货就好~\n小甲鱼:呃。。。。。。你真牛!\n小客服:那是,谁让我是鱼C最可爱小客服嘛~\n小甲鱼:下次有人想调戏你我不阻止~\n小客服:滚!!!\n================================================================================\n小客服:小甲鱼,有个好评很好笑哈。\n小甲鱼:哦?\n小客服:"有了小甲鱼,以后妈妈再也不用担心我的学习了~"\n小甲鱼:哈哈哈,我看到丫,我还发微博了呢~\n小客服:嗯嗯,我看了你的微博丫~\n小甲鱼:哟西~\n小客服:那个有条回复“左手拿著小甲魚,右手拿著打火機,哪裡不會點哪裡,so easy ^_^”\n小甲鱼:T_T\n================================================================================\n小客服:小甲鱼,今天一个会员想找你\n小甲鱼:哦?什么事?\n小客服:他说你一个学生月薪已经超过12k了!!\n小甲鱼:哪里的?\n小客服:上海的\n小甲鱼:那正常,哪家公司?\n小客服:他没说呀。\n小甲鱼:哦\n小客服:老大,为什么我工资那么低啊??是时候涨涨工资了!!\n小甲鱼:啊,你说什么?我在外边呢,这里好吵吖。。。。。。\n小客服:滚!!!'
>>> f.seek(15,0)
15
>>> f.tell()
15                                        #这时指针的位置在15这
>>> f.seek(2,1)              #只想从15开始往后偏移2个位置,竟然报错了,不知什么原因?1不是代表当前位置吗
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    f.seek(2,1)
io.UnsupportedOperation: can't do nonzero cur-relative seeks
TypeError: tell() takes no arguments (2 given)
最佳答案
2018-4-4 11:21:43
xue11 发表于 2018-4-4 10:47
好的,谢谢
但是为什么打开是这样的
二进制的缘故吗?

b模式选项 就是操作二进制的。
要不还分t和b干嘛
222222seek.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-4 09:46:39 | 显示全部楼层
移动位置不能用f.tell()方法哈,兄弟
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 09:50:32 | 显示全部楼层
是 f.seek(2,1)

不是 f.tell(2,1) 。f.tell()没参数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-4 10:07:00 | 显示全部楼层
ba21 发表于 2018-4-4 09:50
是 f.seek(2,1)

不是 f.tell(2,1) 。f.tell()没参数

不好意思,写错了,改下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-4 10:09:29 | 显示全部楼层
重庆帅哥Moses 发表于 2018-4-4 09:46
移动位置不能用f.tell()方法哈,兄弟

有改了下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 10:24:15 | 显示全部楼层
这是因为,在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。将  f=open("aaa.txt","r+")  改成
f = open("aaa.txt","rb")   就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-4 10:47:29 | 显示全部楼层
ba21 发表于 2018-4-4 10:24
这是因为,在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时 ...


好的,谢谢
但是为什么打开是这样的
二进制的缘故吗?
捕000000获.JPG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 11:21:43 | 显示全部楼层    本楼为最佳答案   
xue11 发表于 2018-4-4 10:47
好的,谢谢
但是为什么打开是这样的
二进制的缘故吗?

b模式选项 就是操作二进制的。
要不还分t和b干嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 04:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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