网站LOGO
博客 | 棋の小站
页面加载中
12月6日
达尔达尼亚瀑布,博洛尼亚,意大利 ...
网站LOGO 博客 | 棋の小站
记录学习,心得,状态,生活。
菜单
  • 热评
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Python实用库:密码加密、表格输出
    点击复制本页地址
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    按住ctrl可打开默认菜单

    Python实用库:密码加密、表格输出

    · 原创 ·
    学学编程 · pipPython
    共 4072 字 · 约 2 分钟 · 411

    最近一个月一直在阅读和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()即可。

    python 代码:
    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()
    traceback输出traceback输出

    密码加密解密

    原文链接: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的表格。

    MySQL的表格输出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库,这个库提供了更多样式,如下图。

    rich库的样式rich库的样式rich库的样式rich库的样式 python 代码:
    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()

    这段代码我没有运行成功,各位可以试一试。

    声明:本文由 (博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。
    现在已有

    8

    条评论
    发一条!
    1. 头像
      YuYang
      • 等级:Lv.2
      • 角色:访客
      • 在线:本月

      没有废话,直奔主题.总结的很Nice

      · · · 江苏-宿迁
      1. 头像
        YuYang

        😁

        · · · 海外
    2. 头像
      TeacherDu
      • 等级:Lv.5
      • 角色:首页 · 好友
      • 在线:本周

      我又来了

      · · · 北京-北京
      1. 头像
        TeacherDu

        欢迎欢迎

        · · · 海外
    3. 头像
      云晓晨
      • 等级:Lv.5
      • 角色:首页 · 好友
      • 在线:本周

      最近一直在整数据结构

      · · · 山东-济南
      1. 头像
        云晓晨

        哎,贵站的登录功能老是劝退我要评论的想法。

        · · · 河北-秦皇岛
        1. 头像
          云晓晨
          • 等级:Lv.5
          • 角色:首页 · 好友
          • 在线:本周

          不登录也可以评论

          · · · 山东-济南
      2. 头像
        云晓晨

        我们大二上学期就学了,现在一年了。

        · · · 河北-秦皇岛
    博客logo 博客 | 棋の小站 记录学习,心得,状态,生活。
    ICP 冀ICP备2023007665号 ICP 冀公网安备 13030202003453号

    🕛

    本站已运行 221 天 15 小时 29 分

    👁️

    今日访问量:456 昨日访问量:2564

    🌳

    建站:Typecho 主题:MyLife
    博客 | 棋の小站. © 2023 ~ 2023.
    网站logo

    博客 | 棋の小站 记录学习,心得,状态,生活。
     
     
     
     
    壁纸
     
     
     
     

    8

    1

    1

  • 下一篇