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

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

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

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

下载网络文件并展示进度

python 复制代码
 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()

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

arduino 复制代码
 pip install click tqdm

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

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

系统通知

我们先看一下代码:

ini 复制代码
 from plyer import notification
 import psutil
 from time import sleep
 while True:
     battery = psutil.sensors_battery()
     life = battery.percent
     if 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一起,每天不一样!

相关推荐
那我掉的头发算什么5 分钟前
【图书管理系统】基于Spring全家桶的图书管理系统(上)
java·服务器·数据库·spring boot·后端·spring·mybatis
苍何9 小时前
字节发力,豆包大模型2.0 震撼来袭(附 Trae 实测)
后端
苍何9 小时前
不会剪辑的人,开始用 AI 批量出爆款了
后端
苍何9 小时前
百度 APP 正式接入 OpenClaw,所有人限时免费!
后端
Volunteer Technology11 小时前
DynamicTP动态线程池(四)
java·spring boot·后端·spring
野犬寒鸦11 小时前
从零起步学习并发编程 || 第九章:Future 类详解及CompletableFuture 类在项目实战中的应用
java·开发语言·jvm·数据库·后端·学习
uzong11 小时前
软件工程师应该尽量改掉的坏习惯
后端
高山上有一只小老虎12 小时前
SpringBoot项目单元测试
spring boot·后端·单元测试
❀͜͡傀儡师13 小时前
Spring Boot Pf4j模块化能力设计思考
运维·spring boot·后端·pf4j
星空彼岸00715 小时前
SA-Token在SpringBoot中的实战指南
java·spring boot·后端