柳小白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( )函数的,结果光文件指针就学习了这么长的时间。
想了解更多精彩内容,快来关注一直在学习的柳芽儿