Python多久会刷新文件?

293 投票
5 回答
291317 浏览
提问于 2025-04-16 00:44
  1. Python多久会把数据写入文件?
  2. 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)

撰写回答