最近一个月一直在阅读和Python有关的文章,每隔几天就能看到一些Python好玩的库或者实用的库。这些库不是很常用,不是基本功,放在笔记里不合适,写在文章里篇幅又太小,于是想着等收集的差不多了给这些库做一个合集。今天正好有时间,就将微信里收藏的一系列文章分享给大家。
打印异常同时不中断程序运行
原文链接:https://mp.weixin.qq.com/s/l6FCY8uoW_2Kqo-wkWqjKA
首先举一个简单的例子。
python 代码:a = -1
print(1 / a)
a = 0
print(1 / a)
a = 1
print(1 / a)
这段程序第二个print会抛出除以0的异常,但由于这段异常被抛出后后面的第三个print就执行不了了,因此它只会打印一个结果。

那我们使用try-except呢?
python 代码:try:
a = -1
print(1 / a)
except ZeroDivisionError as e:
print(e)
try:
a = 0
print(1 / a)
except ZeroDivisionError as e:
print(e)
try:
a = 1
print(1 / a)
except ZeroDivisionError as e:
print(e)
它只会输出错误信息,并没有像上方红色字体提示的那样。

这时我们就可以使用traceback模块了。直接调用traceback.print_exc()
即可。
import traceback
try:
a = -1
print(1 / a)
except ZeroDivisionError:
traceback.print_exc()
try:
a = 0
print(1 / a)
except ZeroDivisionError:
traceback.print_exc()
try:
a = 1
print(1 / a)
except ZeroDivisionError:
traceback.print_exc()

密码加密解密
原文链接:https://mp.weixin.qq.com/s/k3OOujc_0g1DSVb6B1-vxA
在【课设写完了】一文中我分享了我在项目中为实现密码加密解密使用了一个算法,这个算法实际上就与下方的模块功能有点相似。
密码加密解密使用的是cryptography库,使用pip安装即可。
python 代码:from cryptography.fernet import Fernet
# 生成密钥
key = Fernet.generate_key()
cipher_suite = Fernet(key)
# 待加密的数据
data = b"Hello, world!"
# 加密数据
cipher_text = cipher_suite.encrypt(data)
# 解密数据
plain_text = cipher_suite.decrypt(cipher_text)
print("原始数据:", data)
print("加密后:", cipher_text)
print("解密后:", plain_text.decode())
运行结果如下。

终端输出美化的表格
原文链接:https://mp.weixin.qq.com/s/Qf2JhrPkl6dt4riSQrW_LA
在终端输出类似于MySQL的表格。

使用pip安装PrettyTable库即可。首先初始化PrettyTable类,参数是一个列表代表列名,然后调用此对象的add_row方法就可以添加列了。
python 代码:from prettytable import PrettyTable
table = PrettyTable(["name", "age", "score"])
table.add_row(["a", "15", "90"])
table.add_row(["b", "17", "100"])
print(table)

给控制台加个进度条
原文链接:https://mp.weixin.qq.com/s/b4vyQbViHvm-5--hElvxtA
这里第一个使用到了tqdm库,这个还是有点实用性的,可以让用户清楚地看到程序运行的进度。使用方法也很简单,给序列外面使用这个tqdm函数即可。
python 代码:from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(0.1)

默认颜色为红色,还可以自定义颜色。使用pip安装colorma库,这个库是一个跨平台的在终端上添加颜色的库,很好用。
python 代码:from tqdm import tqdm
import time
from colorama import Fore, Style
data = range(100)
for item in tqdm(data, bar_format="{l_bar}%s{bar}%s{r_bar}" % (Fore.LIGHTCYAN_EX, Style.RESET_ALL)):
time.sleep(0.1)

第二个库为rich库,这个库提供了更多样式,如下图。


import time
from rich.progress import Progress, BarColumn
# 创建进度条对象
progress = Progress("[progress.description]{task.description}", BarColumn(), "{task.completed}/{task.total} {task.fields[elapsed]}", auto_refresh=False)
# 添加任务描述
task = progress.add_task("[cyan]Processing...", total=100, elapsed="0m")
# 更新进度条
for i in range(101):
progress.update(task, advance=1, elapsed=time.strftime("%H:%M:%S", time.gmtime(i)))
time.sleep(0.1)
# 完成进度条
progress.stop()
这段代码我没有运行成功,各位可以试一试。
没有废话,直奔主题.总结的很Nice
😁
暂无点赞
暂无点赞
我又来了
欢迎欢迎
暂无点赞
暂无点赞
最近一直在整数据结构
哎,贵站的登录功能老是劝退我要评论的想法。
不登录也可以评论
暂无点赞
暂无点赞
我们大二上学期就学了,现在一年了。
暂无点赞
暂无点赞