python位置_Python seek()函数:设定读写位置

本文介绍了如何使用Python中的seek()函数调整文件读写位置,以便于访问文件中的特定数据。示例展示了如何从文件末尾读取最后两个字符,并解释了seek()的参数用法。同时,还给出了利用tell()获取文件大小的方法。强调文件必须以二进制模式打开以使用seek()。
摘要由CSDN通过智能技术生成

可以使用 seek() 函数调整当前读写文件的位置。例如,我们从文件头部读取了 1000 个字节,处理这 1000 个字节后发现还有一个很重要的信息在文件的第 3 个字节,此时可以将当前位置移动到相对头部 3 个字节的位置,这样下次 read() 操作便可以得到希望得到的信息。

该函数有 2 个参数,第一个参数是 offset,表示偏移量,可以为负数;第二个参数是 whence,表示相对于什么,可以是相对文件的头、文件的尾、当前文件。whence 的默认值是 0,表示文件头,其还可以为1表示当前位置,或者为2表示文件尾部。

下面的例子将打开文件,然后将当前位置移动到尾部的前 2 个字符,这样下次读到的就是文件最后面的两个字符。该文件的最后两个字符是yz。这里需要注意的是,文件一定要以二进制模式打开,否则 seek() 会抛出异常。下面是完整代码:

try:

# 必须以二进制模式打开文件,所以带上b这个标识

file_obj1 = open(u"data.txt", "rb")

pos = file_obj1.tell()

print(u"1)当前位置为%d" % pos)

file_obj1.seek(-2, 2)

print(u"2)当前位置为%d" % pos)

data = file_obj1.read(2)

print(u"读出了%d个字节" % len(data))

print("data = [%s]" % str(data))

pos = file_obj1.tell()

print(u"3)当前位置为%d" % pos)

file_obj1.close()

except IOError:

# 找不到文件时提示文件不存在

print(u"File not Exist")

运行该程序,可以得到如下输出结果:

E:\>python seekDemo1.py

1)当前位置为0

2)当前位置为0

读出了2个字节

data = [b'yz']

3)当前位置为26

下面的例子使用 tell() 和 seek() 来得到某个文件的字节数。其方法是通过得到文件头部的位置信息 start_pos 和尾部的位置信息 stop_pos,求 stop_pos-start_pos 的值来得到文件的大小。代码如下:

try:

file_obj1 = open(u"data.txt", "rb")

file_obj1.seek(0, 2)

end_pos = file_obj1.tell()

print(u"文件大小为%d" % end_pos)

file_obj1.close()

except IOError:

# 找不到文件时提示文件不存在

print(u"File not Exist")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值