zoukankan      html  css  js  c++  java
  • Python文件处理之文件写入方式与写缓存(三)

    Python的open的写入方式有:

      write(str):将str写入文件

      writelines(sequence of strings):写多行到文件,参数为可迭代对象

    首先来看下writelines()这个方法:

    1 f = open('blogCblog.txt', 'w')  #首先先创建一个文件对象,打开方式为w
    2 f.writelines('123456')  #用readlines()方法写入文件

    运行上面结果之后,可以看到blogCblog.txt文件有123456内容,这里需要注意的是,mode为‘w’模式(写模式),再来看下面代码:

    1 f = open('blogCblog.txt', 'w')  #首先先创建一个文件对象,打开方式为w
    2 f.writelines(123456)  #用readlines()方法写入文件

    运行上面代码之后会报一个TypeError,这是因为writelines传入的参数并不是一个可迭代的对象。

    接着来看write方法:

    可以看到在cmd运行上面代码,明明用write写入blogCblog这个字符串,但在blogCblog.txt这个文件里面没有blogCblog这个字符串喔,也就是没有写入成功,为什么?接着来看下这段代码:

    这段代码写入了10000行blogCblog字符串,打开blogCblog.txt文件发现,有内容,但只有9000多行,不是10000吗,怎么写入一个blogCblog就不成功呢?其实,Python写入过程中是把字符串写入一个叫缓冲区中,当你写入的字节大于或等于缓冲区的大小,就会自动写入到文件中,而当你写入的字节小于缓冲区的大小,就会一直存在缓冲区中。

    解决这种问题的方法就是调用close()方法,先清空blogCblog.txt这个文件里的内容,再运行下面代码:

    你会发现blogCblog.txt文件里有blogCblog这个字符串了,这是close()的功劳

    同样的,当你写入一个大于或等于缓冲区大小的数据时,虽然没有调用close()也会写入一部分数据,这是因为缓冲区装不下那么大的数据,会自动的写入到你的文件中,剩下的数据因为小于缓冲区的大小,所以会存在缓冲区中,这就是当你写入大于或等于缓冲区大小的数据时,只写入一部分的原因,这时,只需调用close()方法,就会把缓冲区的剩下数据写入到文件中。

    所以,当你操作完文件后,千万别忘了关闭!!!

    另外:如果你没有关闭,就删除不掉这个文件,因为你进程占用了!还有当你打开这个文件很很多次并不关闭的话就会打开失败!

  • 相关阅读:
    多输出感知机及其梯度
    《机器学习实战》-线性回归
    《机器学习实战》-逻辑(Logistic)回归
    SQL Server 空间监测
    SQL Server 从数据库快照还原数据库
    SQL Server 创建数据库快照
    SQL Server 数据库的自动选项
    SQL Server 数据库游标选项
    SQL Server 数据库状态选项
    MYSQL 二进制还原
  • 原文地址:https://www.cnblogs.com/harvey888/p/5954381.html
Copyright © 2011-2022 走看看