from io import StringIO;

f = StringIO();
f.write('Hello World');
s = f.readline();
print s;

上面这种方法“无论如何”都读不出f的内容,使用readlines和循环也不行。

但是,用以下的方法,却可以“正常读取”:

from io import StringIO;

f = StringIO('Hello World');
s = f.readline();
print s;

这是为什么呢?

这是因为the stream position的原因,当你用:

d = StringIO('Hello World')

其stream position为0(可以通过d.tell()获得),而后执行:

d.readline()

stream position移动到11.因此当我们再次执行d.readline()时,返回的是空字符串。演示见图:

类似的,使用:

f = StringIO()

stream position也为0,但执行了:

f.write('Hello World')

之后,stream position就移动到11了,因此此时你再执行readline时返回的依旧是空字符串。

当然咯,既然这个读取是和stream position的位置有关系,那么要能够在当前情况下还能读取'Hello World!',我们可以调整这个指针的位置,执行:

f.seek(0)

再进行读取操作,即可。

下面利用BytesIO进行演示,是一样的道理:

最新文章

  1. js问题
  2. XidianOJ 1195 Industry of Orz Pandas
  3. Ubuntu修改mysql默认编码的方法
  4. HDU 5113 Black And White 回溯+剪枝
  5. android 页面滑动 ViewFlipper,OnGestureListener,OnTouchListener
  6. 大坑!常被忽视又不得不注意的小细节——%I64,%lld与cout(转载)
  7. CH Round #49 - Streaming #4 (NOIP模拟赛Day2)
  8. hdu 4545 魔法串
  9. 前端-mate讲解
  10. Django - 通用视图
  11. Java中一个方法只被一个线程调用一次
  12. POJ2513 欧拉 + 字典树
  13. 手写事件代理函数 (Delegated function)
  14. Docker: 快速搭建LNMP网站平台
  15. Python之Requests库的异常
  16. [原创]PostMan接口测试神器
  17. NonWindowJoin
  18. ansible随记
  19. Bootloader的结构和启动过程
  20. jsp有哪些动作作用分别是什么?

热门文章

  1. [转]hadoop2.x常用端口
  2. centos6.5 mqtt安装
  3. JS笔记-强化版1
  4. CSS全局声明*与body的区别
  5. 2017-2018-2 20179207 《网络攻防技术》第十三周作业 python3实现SM234算法
  6. HDU 4496 并查集 逆向思维
  7. JVM学习十:JVM之垃圾收集器及GC参数
  8. OWL库(叙词表构建本体OWL库)程序说明文档
  9. .net中的lock
  10. asp.net实现access数据库分页