希望快速定位到自己有哪些电池在跑,有哪些通道是自己的电池可以拆卸,所以有了这个程序。
1 最终效果
2 思路
蓝电的程序会把备份的电池的数据保存在.cex
中,无法读取。当前正在跑的数据存放在SYSINFO
目录下的.syx
中,同样无法读取。但是这个程序会在temp
目录下的ChlSumTable.csv
存放电池运行数据,但是不包含保存路径。
因此,我们可以读取ChlSumTable.csv
的数据,然后根据通道去匹配.syx
中的姓名,再统计一下就行了。
2.1 读取ChlSumTable.csv数据
import re,csv,os
from collections import Counter
from matplotlib.pyplot import pause
pattern = re.compile(r':\\\\\w*') # 用正则表达式解析路径
path0 = 'D:\\LAND\\'
chann = []
stat = []
name = []
finished = []
with open(path0 + '\\temp\\ChlSumTable.csv') as csvfile:
csv_reader = csv.reader(csvfile) # 使用csv.reader读取csvfile中的文件
for row in csv_reader: # 将csv 文件中的数据保存到data中
chann.append(row[1])
stat.append(row[8])
stat = stat[1:]
chann = chann[1:]
2.2 将csv的数据和syx的数据做匹配获得使用者的信息
for ichann in chann:
with open(path0 + '\\SYSINFO\\_' + ichann + '.syx','rb') as f:
name.append(pattern.findall(str(f.read()))[0][3:])
2.3 结果展示
print('-'*30)
print('总通道数:'+ str(len(chann)))
print('空闲通道:' + str(Counter(stat)['停止']+Counter(stat)['完成']))
print('-'*30)
for i in range(len(chann)):
if stat[i] == '停止' or stat[i] == '完成':
finished.append(name[i])
print('姓名 | ' + '使用通道数' + ' | 空闲通道数')
for i in Counter(name):
print(i, ' | ', Counter(name)[i], '|' ,Counter(finished)[i])
while True:
print('-'*30)
name0 = input('请输入要查询的姓名:' )
print('-'*30)
print('通道 | ' + '状态')
if name0 in Counter(name):
for i in range(len(name)):
if name[i] == name0:
print(chann[i],' |',stat[i])
else:
print('没有找到该姓名')