从python inpu刷新HTML页面

2024-06-16 11:41:11 发布

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

新增:

它在没有isseus的情况下工作了大约40分钟,然后代码本身崩溃了: 这是控制台中的输出

Gradi: 29.0 C  Umidita: 35.0 %
Traceback (most recent call last):
  File "temp.py", line 22, in <module>
    valori='Gradi: {0:0.1f} C  Umidita: {1:0.1f} %'.format(temperature, humidity)
ValueError: Unknown format code 'f' for object of type 'str'

你有什么建议?在

旧版:

我必须刷新一个HTML页面,这个页面每次都被Python脚本重写以获得最新的值。有时页面刷新时显示的是一个没有数据的白色页面。我该怎么解决这个问题?在

^{pr2}$

Tags: 代码pyformatmost情况页面calltemp
1条回答
网友
1楼 · 发布于 2024-06-16 11:41:11

为了使真正的确保在用另一个程序从文件中读取时该文件从不为空或不完整,请在第一个代码块下面继续读取。在

如果你不介意,几乎永远不要有一个空的或不完整的文件,你会这样做的

import datetime
import sys
import Adafruit_DHT
import time


a="""<html>
<meta http-equiv="refresh" content="">
<head></head>
<body><p>"""
b="""</p></body>
</html>"""



while True:
  humidity, temperature = Adafruit_DHT.read_retry(11,16) #11 modello 16 pin
  valori='Gradi: {0:0.1f} C  Umidita: {1:0.1f} %'.format(temperature, humidity)
  print (valori)
  ls="\n"+valori+" "+str(datetime.datetime.now())
  with open("logtemperature.txt","a") as file:
    file.write(ls)
  ws=a+"TEMPERATURA INTERNA:"+" "+valori+b
  with open('temperatura.html','w') as web:
    web.write(ws)
  time.sleep(2)

如果您使用的是Unix/Linux(例如Raspbian),您可以编写自己的准原子写入,因为os.rename是原子的,确保{}始终是完整的

^{pr2}$

替换

with open('temperatura.html','w') as web:
        web.write(ws)

atomic_write('temperatura.html', ws)

在Windows上它可能更复杂。。。在

编辑:

要减轻ValueError问题,可以替换

valori='Gradi: {0:0.1f} C  Umidita: {1:0.1f} %'.format(temperature, humidity)

try:
    valori='Gradi: {0:0.1f} C  Umidita: {1:0.1f} %'.format(temperature, humidity)
except ValueError:
    valori='Gradi: {0} C  Umidita: {1} % (something saying there was a problem)'.format(temperature, humidity)

相关问题 更多 >