https://www.bilibili.com/video/av77410524?p=29
计算传感器日志文件中温度数据的平均值
- 日志文件包含1万条数据
- 温度数据在文件的第3列
- 输入:日志文件 sensor-data.txt
- 输出:平均温度数值,保留小数点两位
ls = line.split() 这一行代码的作用是将每一行的元素以空格分开,并存放到一个列表中
注意事项:
python相比其他编程语言
- 每行后没有分号。
- 没有begin,end,{ }等表示代码归属的元素,只用缩进表达代码的所属关系。
- 变量直接使用,无需类型声明。
- open()、close()、split()等基本函数和方法直接使用,无需引用。
文件的打开模式
-
r :只读模式,默认值,如果文件不存在,返回FileNotFoundError
-
w : 覆盖写模式,文件不存在则创建,存在则完全覆盖
- f = open('t1.txt','r') #只读模式打开文件
- f = open('t1.txt','w') #覆盖写模式打开文件
将文件全部读入以字符串形式保留
f.read() 一次性读入到字符串txt中
文件的全文读入
一次性全部读入文本
f = open("f.txt","r")
txt = f.read()
#对全文txt进行处理
f.close()
文件按行读入文本
f= open("f.txt","r")
for line in f:
#每行文本保存在line中,可逐行处理。
f.close()
第二部分 循环语句
python包括两种循环:遍历循环 无限循环
- 遍历循环 :由for和in组成,从遍历结构中逐一获得元素进行循环
- 无限循环:使用while关键字,由条件控制循环过程
try中的代码如果出现错误,那么就会执行except下面的代码
如果没有出错,那么程序正常执行,就不会执行except部分的代码
avg计算数据的和
cnt计算日志文件的行数
avg/cnt 获得平均温度
#文件按行读入
f= open("f.txt","r")
for line in f:
#每行文本保存在line中,可逐行处理。
f.close()
字符串的split()方法
split()方法:能够根据空格分隔字符串,结果保存到列表变量中
ls = "1 2 3 4 5 6 7".split()
print(ls) #['1','2','3','4','5','6','7']
修改这个代码,尝试获得光照、电压的平均值
#sensor_reader.py
#读取日志文件代码
try:
f = open("sensor_data.txt","r")
avg, count=0, 0
voltage = 0
light = 0
for line in f:
ls = line.split()
count += 1
avg += ls[2]
voltage += ls[-1]
light += ls[-2]
print("平均温度值是:{:.2f}".format(avg/count))
print("平均光照是:{:.2f}".format(light/count))
print("平均voltage是:{:.2f}".format(voltage/count))
f.close()
except:
print("文件打开错误")