Запись данных датчиков в текстовый файл на Python

#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 вместо этого, сработает ли это?