0

嗨,我正在尝试为我的班级制作一个日志文件,以便在其中写入任何内容......

这是我的课的样子

class MyClass:
    f = open('Log.txt','a')
    def __init__(self):
            self.f = open('Log.txt', 'a')
            self.f.write("My Program Started at "+str(datetime.datetime.now())+"\n")
    def __del__(self):
            self.f.write("closing the log file and terminating...")
            self.f.close()

我的代码有效,但正如您在上面看到的,我有两个 f=open('Log.txt','a')

有什么办法可以避免吗?我试图删除其中一个,但它会对我大喊大叫......有没有更好的方法来做到这一点?

4

2 回答 2

1

像这样的东西怎么样:

class Test:
  def __init__(self): #open the file
    self.f=open("log.txt", "w") #or "a"
  def mywrite(self, mytext): #write the text you want
    self.f.write("%s\n" % mytext)
  def myclose(self): #close the file when necessary (you don't need to delete the object)
    self.f.close()

myFile=Test()
myFile.mywrite("abcd")
myFile.myclose()
于 2013-06-26T22:02:18.140 回答
1

你应该只有一个。

在导入时将first f=...文件处理程序创建为类属性,因此第一次实例化 MyClass 时,处理程序已打开,但是:

MyClass() # and __del__ is called here
MyClass() # f is closed
ValueError: I/O operation on closed file

如果你在__init__方法中创建处理程序作为实例属性并在每次实例化 MyClass() 时打开文件,可能这就是你想要的,除非你想使用该类而不实例化它。

于 2013-06-26T22:22:07.790 回答