zoukankan      html  css  js  c++  java
  • 【Python初级】StringIO和BytesIO读写操作的小思考

    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进行演示,是一样的道理:

  • 相关阅读:
    随笔
    第一次随笔
    团队战day02-接口
    团队战day01-初步搭建UI
    团队战start-确定项目以及介绍
    团队—易软
    找回感觉的练习
    第五次作业-团队作业-团队组建
    第四次博客作业-结对项目
    java第九次作业
  • 原文地址:https://www.cnblogs.com/sbhyc/p/9265050.html
Copyright © 2011-2022 走看看