摘要: 看了一下网友的思路,大致都如下: 运行主程序,同时检查是否有更新 下载更新包 退出主程序 解压更新包,覆盖旧版本的文件(主程序退出以后,才能解压覆盖) 这里的问题就是如何覆盖旧版本文件,因为 exe 不像 py 文件,py 文件运行时是可以自己删除自己,或者覆盖自身的,譬如: test.py imp 阅读全文
posted @ 2022-04-07 22:05 wztshine 阅读(4204) 评论(2) 推荐(0) 编辑
摘要: 前两天刚看了两部动漫,找了找动漫排名,发现网上的排名有点老了,于是自己简单写了一点儿代码,非常简单,没有用多线程或多进程 import json from bs4 import BeautifulSoup import requests headers = { 'User-Agent': 'Mozi 阅读全文
posted @ 2022-04-06 22:20 wztshine 阅读(152) 评论(0) 推荐(0) 编辑
摘要: subprocess subprocess 模块允许你生成新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码。此模块打算代替一些老旧的模块与功能: os.system os.spawn run() 运行被 arg 描述的指令, 等待指令完成(阻塞),然后返回一个 CompletedPro 阅读全文
posted @ 2022-04-01 23:23 wztshine 阅读(562) 评论(0) 推荐(0) 编辑
摘要: Jinja2 本文全文都来自:http://docs.jinkan.org/docs/jinja2/index.html 简介 jinja2 是一个模仿 Django 模板语言而重新开发的模板引擎,因为 Django 模板引擎限制比较多,因此有人开发出了 jinja2 这个库。所以如果你比较熟悉 D 阅读全文
posted @ 2022-03-25 14:39 wztshine 阅读(3753) 评论(0) 推荐(0) 编辑
摘要: python尝试清空文件夹下内容,遇到删除不掉的文件或文件夹,会跳过。 import os from typing import Union import stat def clean_folder(folder_path: Union[str, list[str]]): """Remove all 阅读全文
posted @ 2022-03-04 14:08 wztshine 阅读(2219) 评论(0) 推荐(0) 编辑
摘要: 本文来自官方文档,了解下面这些,基本上就够了。 argparse 模块 概念 argparse 是 Python 标准库中推荐的命令行解析模块。在 linux 中,我们可以执行带有参数的命令: ls -l rm -rf 上面例子中,-l, -rf 都是可选参数。 python中也可以做到给一个模块添 阅读全文
posted @ 2022-01-24 13:29 wztshine 阅读(2310) 评论(0) 推荐(0) 编辑
摘要: 想要判断一个应用程序是否已经打开,我们可以查找它的应用窗口名字,然后进行判断 import win32gui # pip install pywin32 collected = {} def get_windows(hd, arg): global collected if win32gui.IsW 阅读全文
posted @ 2022-01-14 10:51 wztshine 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 有时候可能会有这种场景:你在不执行一个函数的情况下,想预先知道这个函数的参数,可以通过 inspect 来获取: from inspect import signature def test(a: str, b: int = 2) -> None: pass sig = signature(test 阅读全文
posted @ 2022-01-14 10:16 wztshine 阅读(579) 评论(0) 推荐(0) 编辑
摘要: python 类型提示 本文参考自:https://www.cnblogs.com/poloyy/p/15170297.html 写在前面:Python 运行时不强制执行函数和变量类型注解,但这些注解可用于类型检查器、IDE、静态检查器等第三方工具。(换句话说,本文下面所说的类型,都是供代码检查器, 阅读全文
posted @ 2022-01-10 16:54 wztshine 阅读(5003) 评论(1) 推荐(0) 编辑
摘要: pip install websockets~=9.1 一个代理服务器,将所有客户端发来的信息,转发到其他服务器。 import asyncio import json import logging import websockets import websockets.legacy.client 阅读全文
posted @ 2022-01-05 16:39 wztshine 阅读(746) 评论(0) 推荐(0) 编辑
摘要: 前端基础知识 根据视频教程总结:视频地址 HTML head 标签 head 标签的内容,不会显示在web页面上,它只是定义了一些浏览器标签标题,页面编码等信息。 title 标签 title 标签定义了浏览器标签的标题 <head> <title>窗口1</title> </head> meta 阅读全文
posted @ 2021-12-21 13:08 wztshine 阅读(128) 评论(0) 推荐(0) 编辑
摘要: __init_subclass__ 可以自定义类的创建。一个实现了这个方法的类,它的子类在创建时(不用实例化,只要这个子类被创建就行),父类就会调用这个方法。 import abc class Interface: def __init_subclass__(cls, **kwargs): # 一旦 阅读全文
posted @ 2021-12-10 12:02 wztshine 阅读(426) 评论(0) 推荐(0) 编辑
摘要: MySQL 教程 用户和权限 创建用户: % 代表匹配任意值 create user 'username'@'192.168.1.1' identified by 'password'; create user 'username'@'192.168.1.%' identified by 'pass 阅读全文
posted @ 2021-11-22 21:47 wztshine 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 对于不方便定位获取的元素,可以通过图像处理,查询一张图在另一张图中的位置,然后获取坐标,从而操作此元素。 譬如针对浏览器上某个按钮,无法通过xpath等方式定位,可以截取此按钮图片,然后对浏览器截图,通过图片对比,获取此按钮坐标,然后点击等。 from pathlib import Path imp 阅读全文
posted @ 2021-11-15 16:52 wztshine 阅读(5999) 评论(2) 推荐(0) 编辑
摘要: 装饰器 # 装饰器 def singleton(cls): instance = {} def inner(*args, **kw): if cls not in instance: instance[cls] = cls(*args, **kw) return instance[cls] retu 阅读全文
posted @ 2021-11-08 17:14 wztshine 阅读(93) 评论(0) 推荐(0) 编辑
摘要: python 3.10 新增的 math case 语句 python 3.10 中新加了一个匹配语句,类似于其他如Java中的 switch... case... ,它可以方便的匹配你想要的内容。可以作为一部分 if...elif...else 的替代品,并且减少代码量。 下面是一个使用 matc 阅读全文
posted @ 2021-11-04 09:31 wztshine 阅读(2964) 评论(0) 推荐(0) 编辑
摘要: 根据长宽比和像素大小两个条件,筛选文件夹内符合条件的图片,然后将其移动或复制到新文件夹中。 所需依赖: pip install PyQt5 pip install Pillow 最新代码点击:这里 代码: from pathlib import Path import shutil import o 阅读全文
posted @ 2021-11-03 22:49 wztshine 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 生动形象记住三次握手,四次挥手 三次握手 前提:有一个人叫客户端,有一个人叫服务器。服务器那里有一些好东西,客户端时不时的上门讨要。 情景1:握手一次 客户端站在门口大喊:服务器,你的语文作业借我看看 正常情况: 服务器直接把作业从门缝扔给你 异常情况: 服务器不在家,客户端嗓子都喊哑了,也没和服务 阅读全文
posted @ 2021-10-14 13:53 wztshine 阅读(129) 评论(0) 推荐(0) 编辑
摘要: # 迭代器,生成器 ## 可迭代对象 一个对象如果实现了 `__iter__(self)`, 并且这个方法返回一个迭代器(Iterator),就是一个可迭代对象(Iterable)。 `iter()` 可以将一个可迭代对象转变成一个迭代器。 一个迭代器一定是可迭代对象,但是一个可迭代对象不一定是迭代 阅读全文
posted @ 2021-10-14 10:01 wztshine 阅读(66) 评论(0) 推荐(0) 编辑
摘要: Pandas基础教程-翻译 简单翻译,pivot 部分内容没翻译,小部分内容略有缺失。 安装 pip install pandas 1. 数据类型 想要使用,先导入包: import pandas as pd 表格数据展示 想要展示一群人的数据,如年龄,姓名,性别,如何展示? df = pd.Dat 阅读全文
posted @ 2021-10-11 13:55 wztshine 阅读(305) 评论(0) 推荐(0) 编辑
摘要: namedtuple的好处是简单易用,并且在使用变量时,可以通过 对象.属性 的格式,获取值,这和普通实例化出来的类的实例如出一辙,可以相当清楚的看出到底是用了哪个属性。 譬如一个类: class Person(): def __init__(self,name,age): self.name = 阅读全文
posted @ 2021-09-16 15:41 wztshine 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 代码中见过好几次 enum.Enum 了,但自己很少用到,老是忘,每次都重新查一遍,此处做个记录。 注意事项: 继承了 enum.Enum 的类,实例化时只能传递值作为参数 不允许在类外改变属性的值 实例: from enum import Enum from enum import unique 阅读全文
posted @ 2021-09-10 12:53 wztshine 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 最近在写安卓页面元素的xpath,不清楚自己写的对不对,就写个小脚本验证一下。 脚本会查找当前目录下所有的 .uix 文件,读取此文件,验证是否能找到相应的 xpath,如果能找到 xpath,则会打开和 .uix 同名的 .png 图片,在此图片上绘制 xpath 所定位的元素的位置。 ps. 命 阅读全文
posted @ 2021-08-19 16:10 wztshine 阅读(448) 评论(0) 推荐(0) 编辑
摘要: super()继承 转自:https://www.cnblogs.com/silencestorm/p/8404046.html class Base(object): def __init__(self): print("Enter Base") print("Leave Base") class 阅读全文
posted @ 2021-08-09 13:58 wztshine 阅读(68) 评论(0) 推荐(0) 编辑
摘要: import smtplib from email.mime.text import MIMEText def send_mail(receiver_address, content): """发送邮件通知""" # 连接邮箱服务器信息 host = 'smtp.163.com' port = 25 阅读全文
posted @ 2021-08-07 09:56 wztshine 阅读(94) 评论(0) 推荐(0) 编辑
摘要: concurrent.futures 异步执行可以由 ThreadPoolExecutor 使用线程或由 ProcessPoolExecutor 使用单独的进程来实现。 两者都是实现抽像类 Executor 定义的接口。 concurrent.futures.Executor 抽象类提供异步执行调用 阅读全文
posted @ 2021-08-05 15:46 wztshine 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 安装: pip install matplotlib 入门 简单介绍: 举个例子,在现实中,我们想要画一个图表,首先需要找一个可以画的地方来画,譬如一张纸,一块黑板等,这些承载图像的东西,称之为:figure 然后,你需要画图,以黑板为例子,一个黑板上面可以画多个坐标轴,坐标轴即带有x,y轴 (Ax 阅读全文
posted @ 2021-08-04 22:16 wztshine 阅读(1572) 评论(0) 推荐(0) 编辑
摘要: 今天看别人写的代码,看到这么一句话 sys.excepthook = exception_hook 看网上的说法,说是重定向异常的。试验一下 # -*- coding: utf-8 -*- import sys def exception_hook(exctype, value, traceback 阅读全文
posted @ 2021-08-04 17:25 wztshine 阅读(567) 评论(0) 推荐(0) 编辑
摘要: Linux 脚本开机启动 Ubuntu: 如果要添加为开机启动执行的脚本文件,可先将脚本复制或者软连接到/etc/init.d/目录下,然后用: update-rc.d xxx defaults number 命令(number为启动顺序), 将脚本添加到初始化执行的队列中去。 注意如果脚本需要用到 阅读全文
posted @ 2021-07-29 16:09 wztshine 阅读(407) 评论(0) 推荐(0) 编辑
摘要: logging模块 日志级别 默认的日志级别是:warning 级别 数值 CRITICAL 50 ERROR 40 WARNING 30 INFO 20 DEBUG 10 NOTSET 0 1. 工作流程 logging的几个组件:记录器(Logger)、处理器(handler)、过滤器(filt 阅读全文
posted @ 2021-07-27 11:27 wztshine 阅读(258) 评论(0) 推荐(0) 编辑