我是一名完全没有经验的A级学生,他试图掌握python来完成作业。我已经有一个星期的时间来完成它 - 我很少知道该做什么,没有编码经验 - 我真的被卡住了,对他们论坛上的人来说可能看起来很愚蠢。
我必须使用覆盆子pi和DHT22传感器创建温度和湿度记录器。我要编写一个脚本,产生一个休眠10秒的循环 - 我将运行该脚本两天来收集足够的数据来生成图形。到目前为止,我所拥有的代码是这样的,并且它不起作用 - 可能是出于某些明显的原因。数据需要在leafpad文件中的两列中出现。当我sudo python执行脚本时似乎没有发生任何事情 - 我的.txt
中没有创建ls
文件(其中只有一个文件在其中:
indoors
51.58778
-0.15944
但LX终端没有错误消息..我做的事情显然是错误的吗?
#将标题详细信息分配给STRING变量 - 手动更改
txt_studentid =' 999'
txt_pi_location ='在室内'
txt_pi_latitude =' 51.58778'
txt_pi_longitude =' -0.15944'
import Adafruit_DHT
pin = 4
sensor = Adafruit_DHT.DHT22
# Import Time module import time
# open file to write
f = open('/home/pi/my_data.txt','w')
f.write(txt_studentid)
f.write('\n')
f.write(txt_pi_location)
f.write('\n')
f.write(txt_pi_latitude)
f.write('\n')
f.write(txt_pi_longitude)
f.write('\n')
f.close()
while True:
# store off the date and time details for this
sample num_month = time.localtime().tm_mon
num_day = time.localtime().tm_mday
num_hour = time.localtime().tm_hour
num_min = time.localtime().tm_min
num_sec = time.localtime().tm_sec
num_humidity, num_temperature = Adafruit_DHT.read_retry(sensor, pin)
txt_month = str(num_month)
txt_day = str(num_day)
txt_hour = str(num_hour)
txt_min = str(num_min)
txt_sec = str(num_sec)
txt_humidity = str(num_humidity)
txt_temperature = str(num_temperature)
f = open('/home/pi/my_data.txt','a')
f.write(txt_month)
f.write(',')
f.write(txt_day)
f.write(',')
f.write(txt_hour)
f.write(',')
f.write(txt_min)
f.write(',')
f.write(txt_sec)
f.write(',')
# write the temperature and humidity to file
f,write(txt_humidity)
f.write(',')
f,write(txt_temperature)
f.write(',')
# write new line
f.write('\n')
# close the file
f.close()
# wait for ten seconds
time.sleep(10)
答案 0 :(得分:1)
您肯定希望至少在while
循环中包含文件写入;或者以某种方式跟踪读数以便以后保存。
我修改了您的代码以帮助您入门:
import Adafruit_DHT
import time
from datetime import datetime
pin = 4
sensor = Adafruit_DHT.DHT22
# Import Time module import time
# open file to write
f = open('/home/pi/my_data.txt','w')
f.write(txt_studentid)
f.write('\n')
f.write(txt_pi_location)
f.write('\n')
f.write(txt_pi_latitude)
f.write('\n')
f.write(txt_pi_longitude)
f.write('\n')
f.close()
f = open('/home/pi/my_data.txt','a')
begintime = datetime.now()
while True:
# store off the date and time details for this
sample_time = datetime.now()
sample num_month = time.localtime().tm_mon
num_day = time.localtime().tm_mday
num_hour = time.localtime().tm_hour
num_min = time.localtime().tm_min
num_sec = time.localtime().tm_sec
num_humidity, num_temperature = Adafruit_DHT.read_retry(sensor, pin)
txt_month = str(num_month)
txt_day = str(num_day)
txt_hour = str(num_hour)
txt_min = str(num_min)
txt_sec = str(num_sec)
txt_humidity = str(num_humidity)
txt_temperature = str(num_temperature)
f.write(txt_month)
f.write(',')
f.write(txt_day)
f.write(',')
f.write(txt_hour)
f.write(',')
f.write(txt_humidity)
f.write(',')
f.write(num_temperature)
f.write('\n')
time.sleep(10) #sleep for 10 seconds
timedelta = sample_time - begintime
if timedelta.days >= 2:
break
f.close()
我会尝试将timedelta
要求设置为30秒,以确保在最多2天之前按预期工作。您可以将if timedelta.days >= 2:
更改为if timedelta.seconds >= 30:
答案 1 :(得分:0)
我猜你的缩进是错的。您将陷入while循环,并且永远不会向文件写入任何内容。尝试缩进从num_month = time.localtime().tm_mon
到time.sleep(10)