#python
Вопрос:
Я пытаюсь записать данные о температуре с двух датчиков в текстовый файл. У меня с этим проблемы. Может кто-нибудь, пожалуйста, помочь мне с этим. Следующий код-это то, что я безуспешно использовал.
#!/usr/bin/env python
import glob
import time
from datetime import datetime
# Typical reading
# 73 01 4b 46 7f ff 0d 10 41 : crc=41 YES
# 73 01 4b 46 7f ff 0d 10 41 t=23187
while True:
for sensor in glob.glob("/sys/bus/w1/devices/28-0*/w1_slave"):
id = sensor.split("/")[5]
try:
f = open(sensor, "r")
data = f.read()
f.close()
if "YES" in data:
(discard, sep, reading) = data.partition(' t=')
t = float(reading) / 1000.0
file = open("/var/tmp/temp.txt","w")
file.write(id,t)
file.close()
except:
pass
time.sleep(10.0)
Исходный код ниже
#!/usr/bin/env python
import glob
import time
# DS18B20.py
# 2016-04-25
# Public Domain
# Typical reading
# 73 01 4b 46 7f ff 0d 10 41 : crc=41 YES
# 73 01 4b 46 7f ff 0d 10 41 t=23187
while True:
for sensor in glob.glob("/sys/bus/w1/devices/28-00*/w1_slave"):
id = sensor.split("/")[5]
try:
f = open(sensor, "r")
data = f.read()
f.close()
if "YES" in data:
(discard, sep, reading) = data.partition(' t=')
t = float(reading) / 1000.0
print("{} {:.1f}".format(id, t))
else:
print("999.9")
except:
pass
time.sleep(3.0)
Код выводится на экран. Я пытаюсь записать в файл.
Комментарии:
1. вы перезаписываете один и тот же файл в каждом цикле, это предназначено?
2. Если в данных нет «ДА»,
t
они будут не определены при выполнении записи. Вы намеревались записать файл только в том случае, если будет найдено «ДА»? И вы намеревались добавить в файл, а не перезаписывать его?3. Я намерен перезаписывать данные каждые 30 секунд. Однако данные, похоже, вообще не записываются в файл.
4. Вы заметили, что ваш отступ не совпадает с исходным отступом? 3 строки «файл» и «время.сна» имеют неправильный отступ. Мой ответ ниже правильный. У вас действительно есть разрешение писать
/var/tmp
?
Ответ №1:
Вероятно, это то, чего вы хотите. Где вы научились использовать 3 пробела для отступов? 😉
#!/usr/bin/env python
import glob
import time
from datetime import datetime
# Typical reading
# 73 01 4b 46 7f ff 0d 10 41 : crc=41 YES
# 73 01 4b 46 7f ff 0d 10 41 t=23187
while True:
for sensor in glob.glob("/sys/bus/w1/devices/28-0*/w1_slave"):
id = sensor.split("/")[5]
try:
data = open(sensor, "r").read()
if "YES" in data:
(discard, sep, reading) = data.partition(' t=')
t = float(reading) / 1000.0
with open("/var/tmp/temp.txt","a") as file:
file.write(id " " t "n")
time.sleep(10.0)
Комментарии:
1. Спасибо, Тим. Я не мог заставить это работать. Смотрите исходный код, который я добавил в запрос выше. Я пытаюсь записать данные в файл. Это не должно быть сложно, но у меня возникли всевозможные проблемы. Ваше здоровье.
2. У вас есть разрешение писать
/var/tmp
? Если вы напишете/tmp
вместо этого, сработает ли это?