def get_time_by_str(str): try: ret = datetime.strptime(str, "%Y-%m-%d %H:%M:%S") LogTool.info(f'格式化后的时间为:{ret}') return ret except: return None
def wrapper(*args, **kwargs): LogTool.info('开始函数:【{0}】'.format(func.__name__)) # LogTool.info(f'参数:【{args}】【{kwargs}】') _stime = dt.datetime.now() _ret = func(*args, **kwargs) _etime = dt.datetime.now() LogTool.info('结束函数:【{0}】, 执行时间:【{1}】'.format(func.__name__, _etime - _stime)) return _ret
def wrapper(*args, **kwargs): try: _ret = func(*args, **kwargs) return _ret except Exception as err: LogTool.error(traceback.format_exc()) LogTool.info( f'函数异常:【{str(func)}】, args:【{args}】, kwargs:【{kwargs}】') return None
def _next_btn_back(self): """ 切换下一个 :return: """ LogTool.info("开始下个报告") assessmentUI = AssessmentUI() assessmentUI.choose_next() self._handle()
def zip_file_path(cls, input_path, output_name): # output_name = input_path + '.zip' # 压缩后文件夹的名字 z = zipfile.ZipFile(output_name, 'w', zipfile.ZIP_DEFLATED) # 参数一:文件夹名 for dirpath, dirnames, filenames in os.walk(input_path): fpath = dirpath.replace(input_path, '') # 这一句很重要,不replace的话,就从根目录开始复制 fpath = fpath and fpath + os.sep or '' # 这句话理解我也点郁闷,实现当前文件夹以及包含的所有文件的压缩 for filename in filenames: z.write(os.path.join(dirpath, filename), fpath + filename) LogTool.info("压缩成功") z.close()
def _pos(self, x, y): """ 点击 :param x: :param y: :return: """ LogTool.info(f"点击鼠标【{x}】【{y}】") win32api.SetCursorPos([int(x), int(y)]) win32api.mouse_event( win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
def _show_run(self, content): """ 显示 :param content: :return: """ if not self.ov(): LogTool.error("程序奔溃啦! 快点联系开发者!") self.run_text.insert(INSERT, "程序奔溃啦! 快点联系开发者!") return LogTool.info(content) self.run_text.insert(INSERT, content)
def is_file(file_path): """ 判断文件和文件夹是否存在,不存在自动创建文件夹 :param file_path: :return: """ if os.path.exists(file_path): LogTool.info("文件路径【%s】存在" % file_path) else: dir_name = os.path.dirname(file_path) if not os.path.exists(dir_name): LogTool.info("文件路径【%s】不存在,将自动创建" % file_path) os.makedirs(dir_name) LogTool.info("路径创建【%s】完成" % dir_name)
def _handle(self): """ 处理当前报告 :return: """ LogTool.info("开始生成报告") assessmentUI = AssessmentUI() assessmentUI.set_fore() assessmentUI.open_report() sleep(2) LogTool.info("获取地址") url = assessmentUI.get_url() self._show_run("---------\n") self._show_run(f"URL:{url}\n") LogTool.info("解析参数") # 聚焦 self._set_focus() handleFile = HandleFile(url) content = handleFile.run() self.result_list.append(content) content = "\t".join(content) self._show_run(f"解析结果:\n") self._show_ret(f"{content}\n")
def get_url(self): """ 获取生成报告地址 :return: """ processId = None content = None cur_client = None # 获取浏览器 for i in range(3): cur_client = win32gui.GetForegroundWindow() name = win32gui.GetClassName(cur_client) thread, processId = win32process.GetWindowThreadProcessId( cur_client) LogTool.info(f"当前应用名【{name}】") if "WidgetWin" in name: LogTool.info("找到了浏览器!") break sleep(1) win32api.keybd_event(13, 0, 0, 0) # 回车 win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 # 杀死进程 # os.kill(processId, signal.CTRL_C_EVENT) # 点击一下 left, top, right, bottom = win32gui.GetWindowRect(cur_client) x = right - left y = bottom - top self._pos(left + x / 2, top + y / 2) sleep(0.1) # 通过tab方式获取url for i in range(5): win32gui.SetActiveWindow(cur_client) win32gui.SetForegroundWindow(cur_client) win32api.keybd_event(9, 0, 0, 0) # tab win32api.keybd_event(9, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 sleep(0.5) # 清空 剪切板 self.clipboard_set("") sleep(0.1) # 全选 win32api.keybd_event(17, 0, 0, 0) # Ctrl win32api.keybd_event(65, 0, 0, 0) # A win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 sleep(0.1) # 复制 win32api.keybd_event(17, 0, 0, 0) # Ctrl win32api.keybd_event(67, 0, 0, 0) # C win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放按键 sleep(0.1) temp = self.clipboard_get() LogTool.info(f"剪切板内容【{temp}】") if "htm" in temp: content = temp LogTool.info(f"找到了网址{content}") break return content
def __init__(self, file_path): self.file_path = file_path.replace("file:///", "") # 文件路径 LogTool.info(f"路径为:{self.file_path}") self.content = None # 文本内容 pass
def wrapper(*args, **kwargs): LogTool.info(f"开启多线程") thr = Thread(target=f, args=args, kwargs=kwargs) thr.start()
def show(cls, content): LogTool.info(content) cls.ui.insert(INSERT, f"{content}\n")
from project.plugs.type_tool import TypeTool from project.toprice.assessment_UI import AssessmentUI from project.toprice.handle_file import HandleFile from project.toprice.project_UI import ProjectUI try: mainroot = os.path.dirname(os.path.abspath(__file__)) except NameError: mainroot = os.path.dirname(os.path.abspath(sys.argv[0])) ConfigTool.set_path(mainroot) log_path = os.path.abspath( os.path.join(ConfigTool.get_path(), ConfigTool.get_str("logging", "path"))) from project.plugs.log_tool import LogTool LogTool.init(log_path) LogTool.info("------------------启动项目-----------------------------") LogTool.info(f"平台信息: 【{platform.platform()}】") LogTool.info(f"当前路径: 【{os.getcwd()}】") LogTool.info(f"系统变量: 【{sys.path}】") LogTool.info(f"日志路径: 【{log_path}】") LogTool.info(f"main路径: 【{ConfigTool.get_path()}】") LogTool.info(f"python路径: 【{sys.executable}】") class MainUI(object): def __init__(self): self.windowUI = None self.ret_text = None self.run_text = None self.num_entry = None self.class_name = "TkTopLevel"