python 指针_柳小白Python学习笔记 13 文件指针操作

昨天遗留了个小问题“open()函数的“w+”模式下可以调用read方法。但是运行结果是空白,是怎么回事呢?”

这是因为使用write( )方法后,文件指针会停留在文本尾末,我们需要把指针移动到文本的开头,再读取。这就要用到seek() 方法,用于移动文件指针到指定位置。把昨天的程序加入seek() 方法看一下。

6159252dd42a2834159fdd1db4e2acec15cebf4d.jpeg?token=983fbf1b759eb1f146cb9d6b488847a3

上面用到了seek() 方法,它的语法格式如下:

语法:file.seek(offset,[whence])。有两个参数

offset:开始的偏移量,即偏移的字节数。中文一个字符是3个字节。

whence:默认值为0,表示要从哪个位置开始偏移。0代表从文件开头开始算起;1代表从当前位置开始算起;2代表从文件末尾算起。查资料说whence=1和whence=2只能在二进制模式下使用。没有学习二进制的内容,只对默认值为0的参数做验证。

学到这里,我很好奇怎么知道文件指针到底在什么位置呢?用什么方法查看指针偏移到指定位置了吗?

百度了一下,使用tell()方法可以获取文件指针的当前位置,它的语法格式file.tell()。

下面就用seek() 方法移动文件指针,再用tell()方法获取当前指针的位置吧。

1.1 使用open函数的“w+”创建num_3.txt,并写入“文件指针到底在哪里”。用tell()方法获取创建文件后及写入内容后,文件指针分别在什么位置。

0eb30f2442a7d933ae64ff3a5d1cb41572f0010c.jpeg?token=af2811d2d709793cedc0aacea71735c4

由上图可以看出,创建文件后,文件指针位置为0,表示指针在文件开头;写入内容后指针位置为27(这句话27个字节),表示在指针文件的末尾。

1.2 沿用1.1的例子,使用seek() 方法移动指针位置,把whence参数为默认值0。

然后用read()方法读取指针偏移后的内容。

810a19d8bc3eb135db66f39e5649cdd5fc1f44d4.jpeg?token=c700f6c411fcd115ffbf3ebe577f92f2

从上图可以看出让指针偏移到0的时候,就是指针移动到开头,可以读取整个文本。指针偏移到3的时候从第二个字符开始读取文本。

1.3 继续沿用1.1的例子,现在把指针偏移数设置为不是3的倍数会怎么样呢?

562c11dfa9ec8a1319eb3f3a1954f489a2ecc0d1.jpeg?token=82df1c878baa64c79a3d5b75ce9bf7cc

从上面的例子可以看出,指针偏移数不是3的倍数也能获取指标位置,但读取时会出错,告诉是无效字节。也对呀,总不能把汉字批成几瓣来显示吧。

今天就学习到这吧,本来是要学习read( )函数的,结果光文件指针就学习了这么长的时间。

730e0cf3d7ca7bcb753b9dee515e0e65f724a809.jpeg?token=128f38f932b54540c54fd03a61038faa&s=14F15E92459A6F641873DE480300D0F6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值