上期说了,我做的软件需要达到以下的三个功能:
1.能够显示当前树梅派主板的温度
2.能够显示已经开机的时间
3.能够显示今天的天气
一、显示主板温度
百度一下就很快得到了答案,这里我将其封装为函数:
def cpu_temp():
file = open("/sys/class/thermal/thermal_zone0/temp")
temp = float(file.read()) / 1000
file.close()
return temp
原理就是读文件的形式,我们进行一下测试:
恩,成功,到时候只需格式化输出,将这个55.017保留一位小数或者根据我们的需求即可。
二、显示已经开机的时间
这个功能也很容易啦,首先我们在程序打开时记录一下当前的时间戳:
import time
time_start=time.time()
然后设置循环,每秒读取一次当前的时间戳:
while 1:
time_end=time.time()
time.sleep(1)
print(time_end-time_start)
这样就实现读取了程序已经运行的秒数了,然后最关键的,我们要将这个秒数转化为平时更为直观的00:00:00格式,
import datetime
time_pass=int(time_end-time_start)
timepass=str(datetime.timedelta(seconds=time_pass))
OK,开机时间功能设置完成
三、能够显示今天的天气
这个功能是相对最复杂的,要用到爬虫,爬虫网上有很多简单的教程,这里我稍微快点讲,只讲核心思路。
这里以爬取沈阳的天气为例:
先随便百度一个能获得沈阳天气的网站:
https://www.tianqi.com/shenyang/15/
打开开发者模式,分析天气数据的位置
我就想要
今日天气:沈阳市,晴,气温4℃~18℃,东北风2级,当前温度6℃。
这句话
然后就是常规爬虫程序,解析地址,找标签,注意设置浏览器头文件,写网络超时的异常,完整代码如下:
import requests
import re
from bs4 import BeautifulSoup
def get_weather():
try:
res = requests.get('https://www.tianqi.com/shenyang/15/',headers={'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'})
html = res.text
soup = BeautifulSoup(html,'html.parser')
items = soup.find(class_='weaone_ba').text
b=re.findall(r'当前温度(.*)。',items)
c=re.findall(r'沈阳市,(.*),气温',items)
stats=b[0]
nums=c[0]
final='%s %s'%(stats,nums)
return final
except:
return '离線中'
if __name__=="__main__":
print(get_weather())
大家下好了相应的库之后可以去试下,这里我用正则表达式过滤了不必要的信息返回了“天气+当前温度的形式”
b=re.findall(r'当前温度(.*)。',items)
c=re.findall(r'沈阳市,(.*),气温',items)
测试结果
成功啦!
这里已经实现了三个我想要实现的核心功能,下次,我将给大家讲解设计一个程序的UI的基本思路。