Python:写日志文件

时间:2014-08-21 09:54:31

标签: python

我创建了一个自己的类来打开和编写一个行文件:

import os, datetime

class LogFile:

    def __init__(self, FileName):
        FilePath = "C:/MyDirectory/Log"
        self.__FileName = FileName
        self.__FullFileName = FilePath + "/" + self.__FileName
        if os.path.exists(self.__FullFileName):
            os.remove(self.__FullFileName)
        self.__File = open(self.__FullFileName,'a')
    def __del__(self):
        pass
    def openFile(self):        
        now = datetime.datetime.now()
        time = now.strftime("%Y-%m-%d %H:%M")
        self.__File.write(time + '/n')        
    def closeFile(self):
        self.__File.close
    def writeFile(self,Text):
        self.__File.write(Text)

它没有显示错误,打开文件,但没有在我的新文件中写一行:

>>> import log
>>> from log import LogFile
>>> aa = LogFile("newbie")
>>> aa.openFile()
>>> aa.writeFile("newtext")

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您必须在写完后关闭打开的文件。内容可能在缓冲区中。关闭文件后,您将能够看到内容。

或者只是使用python的logging模块。

答案 1 :(得分:0)

如果是为了学习,你所做的并不是那么好。

你调用你的类Logfile,所以我认为它是用于登录另一个应用程序。日志的目的之一就是在奇怪的事情发生时,当应用程序崩溃时获取信息。因此,您不应该缓冲记录的信息,而是尽快将它们刷新到磁盘。

您应该考虑只保留文件名作为类的属性,删除open和close方法并将writeFile更改为:

def writeFile(self,text):
    with open(self.__FullFileName) as fd:
        fd.write(text)

当然,重复打开和关闭文件会产生严重的开销,但也会大大增加日志的安全性。

相关问题