如何在Python中关闭类的另一个函数中的文件?
我运行了一个函数(self),在该函数中我打开了一个文件。然后我想在另一个函数reset(self)中关闭该文件 这是我的班级:如何在Python中关闭类的另一个函数中的文件?,python,class,Python,Class,我运行了一个函数(self),在该函数中我打开了一个文件。然后我想在另一个函数reset(self)中关闭该文件 这是我的班级: class Heater (threading.Thread): STATE_IDLE = "IDLE" STATE_RUNNING = "RUNNING" def __init__(self, simulate=False, time_step=config.sensor_time_wait): threading.Thre
class Heater (threading.Thread):
STATE_IDLE = "IDLE"
STATE_RUNNING = "RUNNING"
def __init__(self, simulate=False, time_step=config.sensor_time_wait):
threading.Thread.__init__(self)
self.daemon = True
self.simulate = simulate
self.time_step = time_step
self.reset()
if simulate:
self.temp_sensor = TempSensorSimulate(self, 0.5, self.time_step)
if sensor_available:
self.temp_sensor = TempSensorReal(self.time_step)
else:
self.temp_sensor = TempSensorSimulate(self,
self.time_step,
self.time_step)
self.temp_sensor.start()
self.start()
def reset(self):
self.profile = None
self.start_time = 0
self.runtime = 0
self.totaltime = 0
self.target = 0
def run(self):
now = datetime.datetime.now()
self.name = os.path.join('/storedata/store', "Date_" + now.strftime("%Y-%m-%d") + ".txt")
self.file = open(name, 'a')
self.file.write(now.strftime("%Y-%m-%d"))
reset()
我是否将
self.file=self.run.file.close
放在重置(self)中以实现这一点 我将执行以下操作:
def __init__(self, simulate=False, time_step=config.sensor_time_wait):
self.file = None
现在,在您的类中有一个名为file
的属性。设置为None
。现在
def __reset(self):
if self.file:
self.file.close()
self.file = None
那就够了!请注意,\u reset
在文件未打开时可以安全地调用,因为文件
属性存在并且是无
(关闭已关闭的文件没有任何作用,但更清晰)
请注意,只有在其他地方使用self.file
时,此设计才有意义。否则不定义任何成员,只需执行以下操作:
name = os.path.join(... // your code used "self.name" for some reason
with open(name, 'a') as file:
file.write(now.strftime("%Y-%m-%d"))
作为一般规则,仅在必要时定义类成员,并在其他任何地方定义局部变量。因为您使用的是类,
self.file
可以在函数之外的类内的任何地方使用,因此只需self.file.close()
属性是self.file
,您只需调用self.file.close()
;无需将其重新分配回self.file
“使用”完成任务self.name=os.path.join(
那么您使用的是name
后面的行。您的代码段有一个输入错误。