快速写入状态文件

时间:2012-03-27 07:58:59

标签: python file-io

我的Python脚本需要每秒多次将状态写入文本文件,覆盖以前的内容。

fp = open('status.txt', 'w')
fp.write('12983214/23180100')
fp.close()

您如何推荐实施此操作以最大限度地减少在此花费的时间?命令行电话?单独的线程?

2 个答案:

答案 0 :(得分:7)

看起来你正在写出一个进度号码。这意味着你的字符串永远不会变短,只会更长。

因此,您不必在每次写入之前截断它 - 只需回到开头并写入前一个值。然后使用刷新进行跟踪,以便数据可用于监视状态的任何内容。

每秒这样做几次不应该花费任何大量的时间,这是最简单的解决方案。

fp = open('status.txt', 'w')

#whenever you want to write
fp.seek(0)
fp.write('12983214/23180100')
fp.flush()

#when you're done
fp.close()

如果状态字符串变短,只需添加

即可
fp.truncate(0)
write之前

。您仍需要seek,因为截断不会更改当前文件位置。

所有这些方法都记录在built-in file objects下。

答案 1 :(得分:1)

“每秒多次向文本文件写入状态”
我想你可以保存文件实例,直到不写入它为止。现在关闭文件实例。在结束之前,你可以写很多次 打开和关闭通常是成本效率。

“覆盖以前的内容”
如果覆盖以前的内容,为什么不在结束时间写出最终结果?