错误描述:
seek调用格式:
seek的标准形式为 :seek(offset[,whence])
whence 默认值为0,表示从文件开头进行计算偏移量,这时候offset必须大于等于0
whence 如果为1,表示从当前位置开始计算偏移量,如果offence为负数,表示往前移动,为正表示往后移动
whence 如果为2,表示相对于文件末尾移动
测试代码:
#在python2中执行不会报错
f = open("test.txt",'r')
f.seek(-2,2)
print("position:",f.tell())
f.close()
python3 运行:
python2运行:
没问题
原因分析:因为Pyhon3在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常
解决办法:
在开始使用open打开文件时候,将打开方式从r,换成rb即可