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

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

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

上面用到了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()方法获取创建文件后及写入内容后,文件指针分别在什么位置。

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

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

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

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

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

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

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




转载请注明:http://www.aierlanlan.com/grrz/2324.html