Python多久会刷新文件?
- Python多久会把数据写入文件?
- Python多久会把数据写入标准输出(屏幕)?
我对第一个问题不太确定。
至于第二个问题,我认为Python在每次换行后会把数据写入标准输出。不过,如果你把标准输出重定向到一个文件,它会这么频繁地写入吗?
5 个回答
16
你还可以通过调用io模块中的只读属性DEFAULT_BUFFER_SIZE来查看默认的缓冲区大小。
import io
print (io.DEFAULT_BUFFER_SIZE)
206
你还可以通过编程的方式,强制把缓存里的内容写入文件,这可以用 flush()
这个方法来实现。
with open('out.log', 'w+') as f:
f.write('output is ')
# some work
s = 'OK.'
f.write(s)
f.write('\n')
f.flush()
# some other work
f.write('done\n')
f.flush()
我发现当用 tail -f
查看输出文件时,这个方法特别有用。
411
在文件操作中,Python 默认使用操作系统的缓存方式,除非你特别设置其他的选项。你可以指定缓存的大小,也可以选择不使用缓存,或者使用行缓存。
比如,open 函数可以接受一个缓存大小的参数。
http://docs.python.org/library/functions.html#open
“可选的缓存参数指定文件想要的缓存大小:”
- 0 表示不使用缓存,
- 1 表示使用行缓存,
- 其他任何正数值表示使用大约那个大小的缓存。
- 负数的缓存值表示使用系统默认的缓存,通常对于终端设备是行缓存,而对于其他文件则是完全缓存。
- 如果不提供这个参数,就会使用系统的默认设置。
代码:
bufsize = 0
f = open('file.txt', 'w', buffering=bufsize)