如何将python执行结果输入到excel中-如何使用python将传感器数据输出保存到excel中...

我目前正在使用raspberry pi并使用DHT11每秒读取温度和湿度值.我必须将这些值实时保存到数据库中.这是我每秒钟显示传感器数据的代码,我不知道如何在excel中保存数据/结果.

import RPi.GPIO as GPIO

import dht11

import time

import datetime

import os

# initialize GPIO

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.cleanup()

instance = dht11.DHT11(pin=dht11_pin)

while True:

cnt += 1

if cnt%limit_sec == 0 or cnt == 1:

result = instance.read()

if result.is_valid():

if previous_temperature != result.temperature or previous_humidity != result.humidity:

previous_temperature = result.temperature

previous_humidity = result.humidity

counter += 1

rightnow = datetime.datetime.now()

if result.humidity>=40:

print(str(counter)+". Last valid input: " )

print("Date: " + rightnow.strftime("%d/%m/%Y"))

print("Time: " + rightnow.strftime("%H:%M:%S"))

print("Status: Your plant is on the good condition.")

print("Temperature: %d C" % result.temperature)

print("Humidity: %d %%" % result.humidity)

print("*******************************************")

else:

print(str(counter)+". Last valid input: " )

print("Date: " + rightnow.strftime("%d/%m/%Y"))

print("Time: " + rightnow.strftime("%H:%M:%S"))

print("Status: Your plant is on the bad condition. Please open the water supply.")

print("Temperature: %d C" % result.temperature)

print("Humidity: %d %%" % result.humidity)

print("*******************************************")

else:

print "Invalid result!"

pass

time.sleep(sleep_time)

解决方法:

首先是导入csv模块然后使用

使用open("file_name.csv’,’w’,newline =”)作为csvfile:

writer = csv.DictWriter(csvfile,fieldnames = field_names)

field_names只是列的键值

writer.writerow(

{"日期’:’日期’,’时间’:’时间’,

"状态’:’状态’,’温度’:’温度’,’湿度’:’湿度’})为excel文件写标题

writer.writerow(

{"Date’:rightnow.strftime(“%d /%m /%Y”),’Time’:rightnow.strftime(“%H:%M:%S”),

"Status’:status,’Temperature’:result.temperature,’Humidity’:result.humidity})根据field_names中的键值在csv文件中写入数据

完整代码:

import RPi.GPIO as GPIO

import dht11

import time

import datetime

import csv

import os

# initialize GPIO

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

GPIO.cleanup()

instance = dht11.DHT11(pin=dht11_pin)

with open("file_name.csv", "w", newline="") as csvfile:

field_names = ["Date", "Time", "Status", "Temperature", "Humidity"]

writer = csv.DictWriter(csvfile, fieldnames=field_names)

writer.writerow(

{"Date": "Date", "Time": "Time",

"Status": "Status", "Temperature": "Temperature", "Humidity": "Humidity"})

while True:

cnt += 1

if cnt%limit_sec == 0 or cnt == 1:

result = instance.read()

if result.is_valid():

if previous_temperature != result.temperature or previous_humidity != result.humidity:

previous_temperature = result.temperature

previous_humidity = result.humidity

counter += 1

rightnow = datetime.datetime.now()

if result.humidity>=40:

status = "Your plant is on the good condition."

print(str(counter)+". Last valid input: " )

print("Date: " + rightnow.strftime("%d/%m/%Y"))

print("Time: " + rightnow.strftime("%H:%M:%S"))

print("Status: Your plant is on the good condition.")

print("Temperature: %d C" % result.temperature)

print("Humidity: %d %%" % result.humidity)

print("*******************************************")

else:

status = "Your plant is on the bad condition. Please open the water supply."

print(str(counter)+". Last valid input: " )

print("Date: " + rightnow.strftime("%d/%m/%Y"))

print("Time: " + rightnow.strftime("%H:%M:%S"))

print("Status: Your plant is on the bad condition. Please open the water supply.")

print("Temperature: %d C" % result.temperature)

print("Humidity: %d %%" % result.humidity)

print("*******************************************")

writer.writerow(

{"Date": rightnow.strftime("%d/%m/%Y"), "Time": rightnow.strftime("%H:%M:%S"),

"Status": status, "Temperature":result.temperature, "Humidity": result.humidity})

else:

print "Invalid result!"

pass

time.sleep(sleep_time)

第一个writer.writerow将是你的标题,而field_names只是用作将数据填充到特定列的键

存储你的状态=”并将它放在writer.writerow()等.

标签:raspberry-pi3,sensor,soil,python,github

来源: https://codeday.me/bug/20191008/1873950.html

Python 是一种流行的编程语言,具有丰富的库和模块,可以用于各种应用程序开发。在采集温度信息到Excel 这个需求Python 可以提供一个简单而有效的解决方案。 要实现定时采集温度信息到Excel,可以使用 Python 的一些库和模块。首先,我们可以使用传感器模块来采集温度信息,比如 DHT11、DS18B20 等。然后,利用 Python 的定时任务模块(比如 schedule)设置一个定时器,每隔一定时间执行采集温度信息的任务。在任务执行的过程,可以使用 openpyxl 或 pandas 等库来创建并操作 Excel 文件,将采集到的温度信息写入到指定的单元格。 下面是一个简单的示例代码: ```python import schedule import time import openpyxl from sensor_module import get_temperature # 创建一个新的 Excel 文件 workbook = openpyxl.Workbook() sheet = workbook.active sheet.title = "Temperature" # 定义一个函数,用于获取温度信息并将其写入到 Excel 文件 def collect_temperature(): temperature = get_temperature() sheet.append([time.strftime("%Y-%m-%d %H:%M:%S"), temperature]) workbook.save("temperature_data.xlsx") # 设置定时任务,每隔 10 分钟执行一次 schedule.every(10).minutes.do(collect_temperature) # 持续运行程序,直到手动终止 while True: schedule.run_pending() time.sleep(1) ``` 通过以上的代码,Python 程序可以定时执行获取温度信息的任务,并将数据写入到 Excel 文件。这样,我们就可以方便地采集并记录温度信息,并且能够方便地进行数据分析和可视化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值