赞
踩
碰到一个问题,cmd运行如下代码
>>>from io import StringIO
>>>f=StringIO()
>>>f.write('abc')
3
>>>f.readline()
''
为啥f.readline()打印不出 abc 呢?
背景知识:
python中readline()是用来读取文本文件中的一行。
readline和readlines,read都是用来读取文件内容,readline()每次读取一行,当前位置移到下一行;readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素;read(size)从文件当前位置起读取size个字节(如果文件结束,就读取到文件结束为止),如果size是负值或省略,读取到文件结束为止,返回结果是一个字符串。
原因:
在 f.write(‘abc’)这一句代码运行后,当前位置是abc的后面。运行f.readline()是从当前位置开始读取。因此读不出东西。
怎么解决这个问题呢?
背景知识:
操作文件指针可以通过seek方法:
seek(offset, whence):移动文件指针
offset:偏移量,可为负数
whence:偏移起始位置
偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
os.SEEK_SET:表示文件的起始位置
os.SEEK_CUR:表示文件的当前位置
os.SEEK_END:表示文件的结束位置
解决办法:
>>>from io import StringIO
>>>f=StringIO()
>>>f.write('abc')
3
>>>f.readline()
''
>>>import os
>>>f.seek(0,os.SEEK_SET)
>>>f.readline()
'abc'
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。