Python中的文件类型的类

时间:2013-06-26 21:46:20

标签: python file class

您好我正在尝试为我的班级制作一个日志文件,其中有任何东西都写在那里......

这是我班级的样子

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')

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

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:1)

你应该只有一个。

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

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

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