Python:写入Logfi

2024-03-29 11:17:19 发布

您现在位置: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")

谢谢你的帮助。你知道吗


Tags: 文件importselfdatetimetimeosdeffilename
2条回答

如果是为了学习,你所做的并不好。你知道吗

您调用了类Logfile,因此我假设它是用于登录另一个应用程序的。日志的目的之一正是在奇怪的事情发生时,或者应用程序崩溃时获取信息。因此,您不应该缓冲记录的信息,而应该尽快将它们刷新到磁盘上。你知道吗

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

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

当然,重复打开和关闭文件会带来严重的开销,但日志的安全性也会得到很大提高。你知道吗

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

或者简单地使用python的logging模块。你知道吗

相关问题 更多 >