错误处理程序:用于Python循环的Bash starter脚本

2024-05-17 00:27:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个项目需要用Python编写的无休止的循环。这个脚本将遍历一个变量数组(在脚本开始时创建一次),使用每个变量执行一个任务,然后重新开始。这种方法99.9%的情况下都能正常工作,但每隔一段时间,电子就会卡住并崩溃。这不是一个问题,是由硬件约束引起的,而不是我的脚本。Python scrip输出的错误如下所示,如果I2C总线另一端的Arduino正忙于做其他事情而无法响应,则会导致此错误:

    Traceback (most recent call last):
  File "i2cGet.py", line 105, in <module>
    i2c.i2cWrite(0x54, 1, fanCurrent)
  File "/home/pi/arduino_Interface/i2c.py", line 43, in i2cWrite
    bus.write_byte(address,data)
IOError: [Errno 5] Input/output error

为了解决这个问题,我有一个bash“starter”,它将在python脚本崩溃时使用until python script.py do重新启动它。这也很好,但是我正在为这个过程编写事件日志,并且需要一种方法来知道python脚本崩溃的数组中的哪个变量,以便将其插入日志中。假设这可以用Python中的自定义事件处理程序来完成,但是我很难弄清楚要完成这项任务需要做些什么。在

总结的问题是:如何在Python中创建一个自定义事件处理程序,然后检索事件以在bash starter脚本中使用?在

请原谅我对事件/事件处理程序的术语。我只是在寻找一种方法,在发生错误时,传递我正在处理的数组中的最后一个元素。在本例中,是i2cWrite函数中的0x54,但如果脚本在循环中的其他地方崩溃,则它可能不会始终列在那里。也许更正确的术语是错误处理程序,而不是事件处理程序。。。在

现在,我在Bash中做这件事的唯一原因是我有一个在以前的项目中用于持久性的启动脚本,它很容易适应这个项目。如果用Python启动程序更容易处理这个问题,那么我可以很容易地(我认为)将其移植到另一个地方。在

谢谢你的帮助!在


Tags: 项目方法inpy脚本bash处理程序错误