Ele*_*iou 0 python file-io file python-3.x
我注意到,在Python中写入文件时,一旦文件关闭,内容就会写入文件中。
例如:
with open('test.txt','w') as ffile:
ffile.write("testing")
time.sleep(20)
Run Code Online (Sandbox Code Playgroud)
在此示例中“等待 20 秒后将写入“ testing ”。
这是如何以及为何发生的?为什么不同时写入文件呢?
您正在看到的效果您正在看到缓冲。磁盘 I/O 使用缓冲区来提高性能,但您尚未向缓冲区写入足够的数据以供其刷新。
写入更多数据,或关闭文件,都会导致缓冲区被刷新。或者,将缓冲区大小设置为一个非常小的数字(缓冲区将保存的字节数):
with open('test.txt', 'w', 2) as ffile:
Run Code Online (Sandbox Code Playgroud)
选项0和1有特殊含义;0将完全禁用缓冲(仅适用于二进制模式文件)并且1 is the default for text files (using line buffering, write a newline to flush).
这也意味着如果您有一个文本文件,您可以编写换行符来触发刷新:
ffile.write('\n')
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,您可以使用以下file.flush()方法显式刷新:
ffile.flush()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |