python小工具分享:优雅地实现进度条和系统通知

shigen坚持日更的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考,不断沉淀和成长。

趁着休息的空隙,研究了一下两个比较有意思的脚本,在日常的使用中很好用。

今天的代码展示区别于以前的代码图片展示,直接展示代码。shigen连夜修改了一下md转微信排版的引擎和部分样式。

下载网络文件并展示进度

import click
from tqdm import tqdm
import requests@click.command()
@click.option("-url", "--url", help="file url", required=True)
@click.option("-name", "--name", help="Picture rename")
def file(url, name):"""File download"""_download(url, name)def _download(url, name):if not name:name = get_file_name(url)resp = requests.get(url, stream=True)# 获取文件大小file_size = int(resp.headers['content-length'])with tqdm(total=file_size, unit='B', unit_scale=True, unit_divisor=1024, ascii=True, desc=name) as bar:with requests.get(url, stream=True) as r:with open(name, 'wb') as fp:for chunk in r.iter_content(chunk_size=512):if chunk:fp.write(chunk)bar.update(len(chunk))# 解析文件名称
def get_file_name(url):if '?' in url:return url.split('?')[0].split('/')[-1]else:return url.split('/')[-1]if __name__ == '__main__':file()

在使用之前,需要安装如下的包:

pip install click tqdm

其中,click是一个很有意思的解析命令行参数的工具,比argsparse更好用;tqdm是常用的进度条显示。

效果是怎样的呢?我们一起看看:

下载文件并展示进度

系统通知

我们先看一下代码:

from plyer import notification
import psutil
from time import sleep
while True:battery = psutil.sensors_battery()life = battery.percentif life < 60:notification.notify(title = "Battery Low",message = "Please connect to power source",timeout = 10)sleep(60)

实现的效果就是:每隔1分钟执行一次通知,通知的条件是当前的life即电池电量小于60的时候,出现通知框:

脚本通知消息

需要提前安装的库有:

pip install plyer

⚠️注意:

此脚本仅在windows系统中执行测试效果,macos系统还有待验证,感兴趣的伙伴可以尝试一下。后期shigen也会分享基于本脚本魔改的效率脚本。


以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注支持一下哈,您的鼓励和支持将是shigen坚持日更的动力。同时,shigen在多个平台都有文章的同步,也可以同步的浏览和订阅:

平台备注链接
CSDN知名博客平台,很少关注shigen的CSDN主页
知乎专注内容分享和问题解答shigen的知乎主页
掘金高质量博客平台shigen的掘金主页
腾讯云开发者社区腾讯云开发者社区shigen的腾讯云开发者社区主页
微信公众平台个人微信公众号,分享技术和日常公众号名:shigen

shigen一起,每天不一样!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157280.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL用户管理和授权

目录 一.用户管理 1.1.新建用户 1.2.查看用户 1.3.重命名用户rename 1.4.删除用户 1.5.修改当前登录用户密码 1.6.修改其他用户密码 1.7.忘记root 密码并找回 二.数据库用户授权 2.1.all privilege包含的权限 2.2.授予权限 ①允许指定用户查询指定数据库表 ②允许…

初识Vue 输出Hello World 及注意事项

在我们还没接触Vue之前&#xff0c;我同学常说我可以直接在元素里输出JS的表达式吗&#xff1f;肯定是不太行。当我们接触vue.js后&#xff0c;这个想法成了现实。 每当我们学习一门新的语言或者框架时&#xff0c;我们都习惯打印一个“hello world”&#xff0c;在我们vue当中…

Node.js基础-三大模块

文章目录 一、概念对比作用总结 二、fs文件模块三、path路径模块四、http模块服务器相关概念IP地址域名和域名服务器端口号 创建基本的web服务器基本步骤req请求对象res响应对象根据不同的url响应不同的html内容 总结 一、概念 借助浏览器引擎&#xff08;提供BOM&#xff0c;…

【机器学习】一、机器学习概述与模型的评估、选择

机器学习简介 由来 阿瑟.萨缪尔Arthur Samuel,1952年研制了一个具有自学习能力的西洋跳棋程序&#xff0c;1956年应约翰.麦卡锡John McCarthy&#xff08;人工智能之父&#xff09;之邀&#xff0c;在标志着人工智能学科诞生的达特茅斯会议上介绍这项工作。他发明了“机器学习…

系列十五、idea全局配置

一、全局Maven配置 IDEA启动页面>Customize>All settings>Build,Execution,Deployment>Build Tools>Maven 二、全局编码配置 IDEA启动页面>Customize>All settings>Editor>File Encodings 三、全局激活DevTools配置 IDEA启动页面>Customize>A…

python连接clickhouse (CK)

Author: tkhywang 2810248865qq.com Date: 2023-11-01 11:28:58 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-11-01 11:36:25 FilePath: \PythonProject02\Python读取clickhouse2 数据库数据.py Description: 这是默认设置,请设置customMade, 打开koroFileHead…

61. 旋转链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;李歘歘的博客 &#x1f3c6; &#x1f33a;每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点&#xff0c;以及职场小菜鸡的生活。&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&am…

Android开发知识学习——Kotlin进阶

文章目录 次级构造主构造器init 代码块构造属性data class相等性解构Elvis 操作符when 操作符operatorLambdainfix 函数嵌套函数注解使用处目标函数简化函数参数默认值扩展函数类型内联函数部分禁用用内联具体化的类型参数抽象属性委托属性委托类委托 Kotlin 标准函数课后题 次…

JavaWeb 怎么在servlet向页面输出Html元素?

service()方法里面的方法体&#xff1a; resp.setContentType("text/html;charsetutf-8");//获得输出流PrintWriter对象PrintWriter outresp.getWriter();out.println("<html>");out.println("<head><title>a servlet</title>…

EASYX实现多物体运动

eg1:单个物体运动使用easyx实现单个小球的运动 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #include <stdlib.h> #include <conio.h> #include <time.h> #define PI 3.14 #define NODE_WIDTH 4…

vs2013/2015/2019扩展-联机提示“未能建立到服务器的连接“/“基础连接已经关闭: 发送时发生错误“/“远程主机强迫关闭了一个现有的连接“

VS2013\VS2015 输入命令 [Net.ServicePointManager]::SecurityProtocol[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12 采用上述方法偶尔可以有效&#xff0c;重新启动VS就没用了 VS2019 怎么样都不行 最终解决办法&#xff1a;换一…

React native window工程在macbook中打包运行环境搭建实录

做了个安卓的app&#xff0c;打算试试打包ios。但是mac中遇到许多挑战。在这记录下。 刚开始就是按照文档的操作的&#xff0c; 实际上这里Watchman 不是必须的&#xff0c; 这是监听文件变化然后自动同步更新模拟器效果的&#xff0c;完全可以修改后自己重新打包看效果&#…