python .read()方法的文件指针的问题
2018-08-05 10:27
78 查看
版权声明:本文为博主的原创文章,转载请注明出处。 https://blog.csdn.net/qq_24732411/article/details/81428596
在学习文件读取的时候,先验证file.read():
txt文件:
验证结果:
再验证file.readline()或者file.readlines()方法时,会出现以下情况:
代码:
if __name__ == '__main__': file123 = open('123.txt') file123.read() print(file123.readline())
结果:
可以看到这里是空的。
只是为啥呢,这里就设计到文件指针的问题了。文件指针是一个文件内容的标记内容,表示我读取这个文件到哪了。那么我们在使用完read()之后使用readline()为什么为空呢。这里的猜想就是文件指针指到了文件的末尾,验证:
if __name__ == '__main__': file123 = open('123.txt') file123.read() print(file123.tell())
可以看到,文件指针到了64,为什么是六十四呢,我们可以数一下文件的字数,23个汉字,5个中文标点,都占两个字节,28*2 = 56,那还有8个字节哪来的,原来文件里的换行是占两个字节的,相当于’\n’。这样就是64个了。
回归正题,通过上面的验证,我们可以得出结论,在使用了.read()方法之后,文件指针会指向文件最后,这样后面再想操作就没有任何内容了。
解决办法如下:
1、可以通过seek()方法将文件指针移到文件开头:
if __name__ == '__main__': file123 = open('123.txt') file123.read() print(file123.tell()) file123.seek(0.0) print(file123.tell()) print(file123.readline())
结果:
2、在执行完read()方法之后将文件重新打开(比较蠢的方法,一般不采用)
if __name__ == '__main__': file123 = open('123.txt') file123.read() print(file123.tell()) file123 = open('123.txt') print(file123.tell()) print(file123.readline())
结果和方法一相同。
请各位大佬指教。
阅读更多相关文章推荐
- 文件下载中input.read()与output.write()相关问题,以及mp3下载的文件比原文件大的解决方法
- Python中文件读取方法read(),readline(),readlines()的区别
- 7、定义一个文件输入流,调用read(byte[] b) 方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5,不考虑中文编码问题)。
- python核心编程学习笔记-2016-08-02-01-读取文件的函数中的文件指针问题
- python3 request 爬虫 httplib.IncompleteRead() 问题的简单解决方法
- sublime text3刚从官网下载安装后,Ctrl+B无法直接运行Python文件问题--解决方法
- python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2
- Inputstream读取文件,使用read()方法,判断尾标记需要注意的问题
- python csv 格式文件 中文乱码问题解决方法
- 【python】中文的输出,打印,文件编码问题解决方法
- Python文件读取#write()方法之后不能read()出文件内容的解决办法
- python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2
- 【转】python csv 格式文件 中文乱码问题解决方法
- python获取文件绝对路径解决找不到文件句柄的问题实例(readConfig.py)V1.2
- Java采用readInt()方法直接读取特定的ZIP压缩文件出现了奇怪的问题
- Python遍历zip文件输出名称时出现乱码问题的解决方法
- 在Python中操作文件之read()方法的使用教程
- python之xml文件处理的例子-问题描述及解决方法
- python 的文件读写方法:read readline readlines wirte writelines
- 我用python将结果写入txt文件出现的编码问题及其解决方法