我每0.01s读取一个文件,但是我用
with open('file.txt','r') as FILE:
data = FILE.read()
应按照官方文档的保存方式打开和关闭文件。
在同一时间,我以相同的方式(2s-20s)一次写入同一文件,但带有'w'标志-但来自完全不同的python进程
大约20分钟的正常工作后,我会收到此错误
IOError: [Errno 24] Too many open files:
我认为这是完全荒谬的错误。有一件有趣的事情发生了,我不得不在这里提及。由于这是在我的树莓派中发生的,没有理由期待此错误,所以我没有涵盖LOG的错误。因此,我尝试记录该错误,并且发生了一些奇怪的事情:
while True:
...
#loop where I read every 0.01 a file, IOError of the reading file happens
...
except Exception as e: # log the IOEerror
with open('log_error.txt','w') as FILE: # Cacthes the error but triggers a new IOError
FILE.write(e)
发生IOError后,在Exception中发生了新的错误,而不是读取文件的IOError,我得到了IOError来将错误记录在log_error.txt中
任何人都知道发生了什么事吗?我无法弄清楚,因为它在20分钟到2小时后崩溃(这意味着文件最少以20 * 60 / 0.01的速度打开,并且没有错误发生)。它只是一直工作到没有。感谢您的任何建议
编辑-代码:
我有接收命令的MQTT订户(写在路径self.path_anim_current
上的文件中)
if payload['request']=='write_in':
with open(self.path_anim_current,'w') as FILE:
FILE.write(payload['data'])
在不同的过程中,我尝试尽快捕获文件中的更改-那就是0.01s的读取循环,我在self.path_anim_current
上读取文件
这是0.01s读取循环的摘录:
PATH
= self.path_anim_current
with open(PATH,'r') as FILE:
ANIMATION = FILE.read()
if ANIMATION != '':
COMMAND = rc.process_json(str(ANIMATION))
with open(PATH,'w') as FILE:
FILE.write('') #**On reading the file I want to delete its content**
rc.process_json-它只是一个使用某些配置加载json文件的功能
以标准方式读取json
with open('path_to_some_config') as FILE:
DOCUMENT = json.load(FILE)