gpt4 book ai didi

Python 程序运行一周,然后莫名其妙地失败了

转载 作者:行者123 更新时间:2023-11-28 19:55:15 26 4
gpt4 key购买 nike

我有一个运行正常的python程序,然后运行了很长时间就失败了,我不明白为什么会这样。

这是为了在我的树莓派上驱动 PiGlow 板。
PiGlow

没有更好的办法,我让它以二进制格式显示时间,使用制造商提供的 clock.py 来演示电路板。

代码如下所示:

from pyglow import PyGlow
from datetime import datetime

pyglow = PyGlow()

while True:
time = datetime.now().time()
hour,min,sec = str(time).split(":")
sec,micro = str(sec).split(".")

# do stuff with the hour, min, sec, write them to the LEDs

# that's all, no delay or anything else, so the loop runs like crazy

它会正常运行一天,或者一周,然后失败,像这样:

pi@pi ~/pyglow $ sudo python clock.py    
Traceback (most recent call last):
File "clock.py", line 37, in <module>
sec,micro = str(sec).split(".")
ValueError: need more than 1 value to unpack

经过一些研究(主要是在 SE 上),我的猜测是当它失败时,这是因为 str().split(".") 只返回一个值,而程序期望两个.也许如果不幸落在小数点后没有任何内容的第二个边界上?

如果重要的话,那就是 Python 2.7。

我是 Python 的新手,所以我不会马上跳出来。
你能看出问题出在哪里吗?
您会在此程序中更改什么以防止出现这种情况?

最佳答案

当微秒为零时(是的,这偶尔是可能的)您在秒的字符串表示中没有点。

您可以使用 Python 日期/时间属性而不是解析字符串表示形式:

from datetime import datetime
time = datetime.now().time()
hour, min, sec, micro = time.hour, time.minute, time.second, time.microsecond

如果您必须使用零填充(02 而不是 2)字符串,您可以使用字符串格式:

hour, min, sec, micro = '{:02d}'.format(time.hour), '{:02d}'.format(time.minute), '{:02d}'.format(time.second), '{:06d}'.format(time.microsecond)

关于Python 程序运行一周,然后莫名其妙地失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29021015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com