首页 > 代码库 > Python文件处理之文件写入方式与写缓存(三)
Python文件处理之文件写入方式与写缓存(三)
Python的open的写入方式有:
write(str):将str写入文件
writelines(sequence of strings):写多行到文件,参数为可迭代对象
首先来看下writelines()这个方法:
1 f = open(‘blogCblog.txt‘, ‘w‘) #首先先创建一个文件对象,打开方式为w2 f.writelines(‘123456‘) #用readlines()方法写入文件
运行上面结果之后,可以看到blogCblog.txt文件有123456内容,这里需要注意的是,mode为‘w’模式(写模式),再来看下面代码:
1 f = open(‘blogCblog.txt‘, ‘w‘) #首先先创建一个文件对象,打开方式为w2 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()方法,就会把缓冲区的剩下数据写入到文件中。
所以,当你操作完文件后,千万别忘了关闭!!!
另外:如果你没有关闭,就删除不掉这个文件,因为你进程占用了!还有当你打开这个文件很很多次并不关闭的话就会打开失败!
Python文件处理之文件写入方式与写缓存(三)