当前位置:   article > 正文

python--readline()_readline 读取abc的结果

readline 读取abc的结果

碰到一个问题,cmd运行如下代码

>>>from io import StringIO
>>>f=StringIO()
>>>f.write('abc')
3
>>>f.readline()
''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

为啥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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号