关于使用Python写入日志文件的建议

10 投票
3 回答
18087 浏览
提问于 2025-04-16 18:29

我有一段代码需要每10秒写入大约20字节的数据。现在我在使用Windows 7和Python 2.7。

你们有没有推荐一种对操作系统和硬盘压力最小的方法来做到这一点?

我在考虑每10秒打开和关闭同一个文件:

f = open('log_file.txt', 'w')
f.write(information)
f.close()

还是说我应该保持文件打开状态,只用flush()来刷新数据,而不那么频繁地关闭它?

sqlite呢?它会提高性能,减少打开和关闭文件的操作带来的负担吗?(它不就是一个平面文件数据库,跟文本文件差不多吗……?)

还有mysql呢?(这个需要本地服务器/进程……我不太清楚它具体是怎么保存数据到硬盘的)?

我只是担心这样会不会把我的硬盘搞坏,还想提高这个记录过程的性能。每10秒我会收到新的日志信息,这个过程会持续24小时,每天都在进行。

你们有什么建议?

比如:想想像utorrent这样的程序,它们需要长时间不断保存大量数据,(而我的日志文件写入的数据量比这些“下载类程序”要少得多)

import random
import time


def get_data():
    letters = 'isn\'t the code obvious'
    data = ''
    for i in xrange(20):
        data += random.choice(letters)
    return data

while True:
    f = open('log_file.txt', 'w')
    f.write(get_data())
    f.close()
    time.sleep(10)

我的CPU大约在15秒后就开始发出噪音……(还是说是我的硬盘?)

3 个回答

4

别担心你的硬盘会被“烧坏”——每10秒写入20个字节的数据,对硬盘来说只是正常使用中写入数据的一小部分。

4

使用日志框架。这正是它的设计目的。

补充:真糟糕,抢先一步了 :).

13

正如大家所预料的,Python自带了一个很棒的工具来处理这个问题,大家可以看看这个日志记录模块。

撰写回答