Windows语音报时提醒

2020年05月10日 109点热度 2人点赞 0条评论

续航测试时的一个想法,实际上可能用不着,不过反正学习成本低,就抽点测试空闲时间做了这么一个工具。

首先,把开始时间、测试模块、测试时长信息导入TXT文本

Excel使用小技巧


表中结束时间,可以利用Excel中自带的函数来快捷填写,如结束时间可以这么写:

=F5+TIME(0,H5,0)

其中F5是开始时间,H5是测试时长。(TIME函数参数:小时、分钟、秒)

进入正题:

将开始时间、测试模块、测试时长,这三项信息分别写入txt文本中,对应文件名time.txt、todo.txt、duration.txt,一行一条信息。(如下图所示)

然后,Python读取TXT中的数据,并输出一个Json格式的文本

# -*- coding: UTF-8 -*-
import json


time_list = []  # 开始时间
todo = []  # 测试项
duration =[]  # 测试时长
data = []  # 所有数据存储为字典


def list_append(file,list):
    with open(file) as f:
        for line in f.readlines():
            line = line.strip('\n')
            list.append(line)


def write_json(jlist):
    # 将列表写入json文件
    with open('power_consumption_test_items.json', 'w') as f_obj:  
        json.dump(jlist, f_obj, ensure_ascii=False)


# 把txt中的信息存储到单独list中
list_append('time.txt',time_list)
list_append('todo.txt',todo)
list_append('duration.txt',duration)


# 将数据存储到Json格式的文本中
write_json(data)

最后,获取当前时间,与Json文本中的时间进行匹配

# -*- coding: UTF-8 -*-
import json
import time
import datetime
import win32com.client


def read_json(json_file):
    # 读取存储于json文件中的列表
    with open(json_file, 'r') as f_obj:
        jlist = json.load(f_obj)
    return jlist


json_data = read_json('power_consumption_test_items.json')

while True:
    now = datetime.datetime.now()
    str_now = str(now)[0:16]
    time_now=str_now.replace('-','/')
    for list in json_data:
        if time_now in list['开始时间']:
            out_txt = "【续航测试提醒!】\n当前时间:%s\n!测试项:%s\n!测试时长:%s 分钟。"\
                        %(list['开始时间'], list['测试项'], list['测试时长'])
            spk = win32com.client.Dispatch("SAPI.SpVoice")
            spk.Speak(out_txt)
    print(now)
    time.sleep(1)
当获取的实时时间与Json数据中出现匹配项时,Python会调用win32api让电脑语音报读提醒,报读内容包含Json数据中的续航测试开始时间、测试项/模块、测试时长。(内容可以自定义)

完整代码如下:(json使用pip安装,win32需要根据Python版本自行上网下载

Json文本下载(供测试使用):立即下载

# -*- coding: UTF-8 -*-
import json
import time
import datetime
import win32com.client


time_list = []
todo = []
duration =[]
data = []


def list_append(file,list):
    with open(file) as f:
        for line in f.readlines():
            line = line.strip('\n')
            list.append(line)

list_append('time.txt',time_list)
list_append('todo.txt',todo)
list_append('duration.txt',duration)

for start_time, test_item, total_time in zip(time_list, todo, duration):
    data.append({'开始时间': start_time, '测试项':test_item, '测试时长': total_time})


def write_json(jlist):
    # 将bx列表写入json文件
    with open('power_consumption_test_items.json', 'w') as f_obj:  
        json.dump(jlist, f_obj, ensure_ascii=False)


def read_json(json_file):
    # 读取存储于json文件中的列表
    with open(json_file, 'r') as f_obj:
        jlist = json.load(f_obj)
    return jlist


# 将数据写入json文本存储
# write_json(data)
json_data = read_json('power_consumption_test_items.json')

while True:
    now = datetime.datetime.now()
    str_now = str(now)[0:16]
    time_now=str_now.replace('-','/')
    for list in json_data:
        if time_now in list['开始时间']:
            out_txt = "【续航测试提醒!】\n当前时间:%s\n!测试项:%s\n!测试时长:%s 分钟。"\
                        %(list['开始时间'], list['测试项'], list['测试时长'])
            spk = win32com.client.Dispatch("SAPI.SpVoice")
            spk.Speak(out_txt)
    print(now)
    time.sleep(1)

Hang.Zhang

“舍”是一种觉悟,更是一种自由

文章评论