希望快速定位到自己有哪些电池在跑,有哪些通道是自己的电池可以拆卸,所以有了这个程序。

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('没有找到该姓名')