美文网首页ITS·黑客
python之IO同步编程Part1

python之IO同步编程Part1

作者: JEZAU | 来源:发表于2017-05-05 23:11 被阅读25次

    元类看不进去
    然后 既然我在看路径的时候接触了os内库
    那就让我来看看IO编程吧 比较好理解..

    Python内置的os模块可以直接调用操作系统提供的接口函数
    所以我觉得io模块就可以看成是可以直接调用内存提供的接口函数

    读写之类的具体操作方法我在内置函数篇下面已经写过啦,所以这里只补充之前不知道哒~
    1.使用with语句操作文件IO是个好习惯。
    with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。python with的相关知识
    然而我只看了我这里用到的一种用法。

    值得注意的是:
    我在写入文件的时候,是重新开始写而不是在后面添加,且会返回字符数
    但是为什么调用stringIO的时候 就可以输出一整串呢?
    代码如下:

    >>> with open('Desktop/python/test.py','r') as  f:
    ...     f.read()
    ... 
    "#!/usr/local/Cellar/python3/3.6.1/bin/python3\n\ndef m(x):\n    print('1')\n    return 3*x\n    print('6')\n\na = m(10) #输出1\nprint('分割')\nprint(a) #输出30\nprint('分割')\nm(10)  #输出1\nprint('分割')\nprint(m(10)) #输出 1 30\n\n"
    >>> with open('Desktop/python/test.py','w') as  f:
    ...     f.write("测试")
    ... 
    2```
    然后我的文件里就只有测试两个字啦
    

    from io import StringIO
    f = StringIO()
    f.write('Hello')
    5
    f.write(' ')
    1
    f.write('world')
    5
    print(f.getvalue())
    Hello world```

    然后我就这样测试了一下

    >>> with open('Desktop/python/test.py','w') as  f:
    ...     f.write("测试")
    ...     f.write('再一次测试')
    ... 
    2
    5
    >>> f.write('test')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: I/O operation on closed file.
    >>>```
    2.我的理解猜想: 
    stringio在import的时候被打开,可以多次传入数据,在被读取以后就重新变成了空的,相当于我们把内存里的东西取出来了,就空啦。
    文件的w状态相当于创建了一个内存,往内存中输入数据。结束w的时候把内存中的数据全部输入文件然后两者均关闭,且文件中的原数据都会没掉,因为输入时会整个代替掉。读取的时候也是如此,反一反,把文件中的数据弄到内存中,调出来读一遍以后就没掉啦。
    尝试一下,果然,只要不close,readline()、read(size)就会继续往后面读,否则就从头开始。
    
    4.readlines中的strip说是去掉换行符,但以前学的是去掉空格啊 于是我做了以下尝试
    

    line = ['123','222','231']
    for a in line:
    ... print(a)
    ...
    123
    222
    231
    line = ['123\n','222\n','231\n']
    for a in line:
    ... print(a)
    ...
    123

    222

    231

    line = ['123\n','222\n','231\n']
    for a in line:
    ... print(a.strip())
    ...
    123
    222
    231

    所以strip()不仅可以去掉空格,还可以去掉换行符,制表符。

    相关文章

      网友评论

        本文标题:python之IO同步编程Part1

        本文链接:https://www.haomeiwen.com/subject/myastxtx.html