程序开发的背景:
双十一应客户要求,需要每隔一个小时就需要发一份订单统计数据给到联系微信群内,供客户统计各个业务节点的处理速度,为了不想在电脑前一直守着,本着能用技术去解决的问题,为啥要手动去处理的观念,由此产生想法开发一个自动化程序去解放双手!
一、需要安装的第三方类库:
selenium
wxauto
schedule
winreg
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import os
from wxauto import *
import argparse
import winreg
import schedule
import logging
二、代码大体组成部分:
三、代码分析:
# 任务运行
def run_job():
logging.basicConfig()
schedule_logger = logging.getLogger('schedule_sendWxFile')
# 日志级别为DEBUG
schedule_logger.setLevel(level=logging.DEBUG)
# 获取桌面路径
desktop_url = desktop_path()
desktop_url = desktop_url.replace("Desktop", "Download")
# 接收参数
parser = argparse.ArgumentParser(description="download excel send to wx group!")
parser.add_argument("--login_url", type=str, default="", help="报表文件下载的登录地址")
parser.add_argument("--save_path", type=str, default=desktop_url+ r"\report", help="报表文件下载保存到本地电脑目录路径, 默认: 当前用户download目录下report文件夹")
parser.add_argument("--username", type=str, default="", help="报表文件下载的登录账号")
parser.add_argument("--password", type=str, default="", help="报表文件下载的登录密码")
parser.add_argument("--download_url", type=str, default="", help="报表文件下载链接")
parser.add_argument("--save_filename", type=str, default="", help="报表文件下载保存后文件名称, 默认:双十一单据分段耗时统计表_当前时间xxxx-xx-xx-xx00_E3.xlsx")
parser.add_argument("--who", type=str, default="文件传输助手", help="需要发送报表的微信用户, 默认文件传输助手")
parser.add_argument("--start_time", type=str, default="", help="指定开始时间报表下载, 格式:2023-11-10-11:00:00")
parser.add_argument("--end_time", type=str, default="", help="指定结束时间报表下载, 格式:2023-11-10-11:00:00")
parser.add_argument("--time_lag", type=int, default=1, help="程序定时运行时间间隔, 默认1小时")
params = parser.parse_args()
time_lag = params.time_lag
if time_lag > 0:
# schedule.every(time_lag).hours.do(download_and_send, params)
schedule.every().hour.at(":09").do(download_and_send, params)
while True:
schedule.run_pending()
time.sleep(1)
else:
download_and_send(params)
程序入口为run_job函数,使用schedule实现定时执行的能力,argparse模块作为运行程序时的传参,为了避免有些地方取值发生改变,做的更加灵活一点
# 判断文件是否存在
def exist_file(path_to