我创建了一个自己的类来打开和编写一个行文件:
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")
感谢您的帮助。
答案 0 :(得分:0)
您必须在写完后关闭打开的文件。内容可能在缓冲区中。关闭文件后,您将能够看到内容。
或者只是使用python的logging
模块。
答案 1 :(得分:0)
如果是为了学习,你所做的并不是那么好。
你调用你的类Logfile,所以我认为它是用于登录另一个应用程序。日志的目的之一就是在奇怪的事情发生时,当应用程序崩溃时获取信息。因此,您不应该缓冲记录的信息,而是尽快将它们刷新到磁盘。
您应该考虑只保留文件名作为类的属性,删除open和close方法并将writeFile更改为:
def writeFile(self,text):
with open(self.__FullFileName) as fd:
fd.write(text)
当然,重复打开和关闭文件会产生严重的开销,但也会大大增加日志的安全性。