• [Python]跟着代码去学习---二维码1:文字生成二维码


    二维码在生活的使用场景与频率是越来越高了,以前的主要应用在支付、点餐、取快递等各场景,现在因为疫情的影响,行程码、核酸码、各地健康码等应时而生,相比于传统的条形码,其能承载更多的信息,二维码的历史及原理不是我们今天的重点,感兴趣的小伙伴可以自行google;今天我们就来看一下,如何在Python环境下生成我们想要的二维码。

    1.安装模块:

    pip install qrcode
    
    • 1

    验证:

    D:\code\wusuowei>pip show qrcode
    Name: qrcode
    Version: 7.3.1
    Summary: QR Code image generator
    Home-page: https://github.com/lincolnloop/python-qrcode
    Author: Lincoln Loop
    Author-email: info@lincolnloop.com
    License: BSD
    Location: d:\software_install\python39\lib\site-packages
    Requires: colorama
    Required-by:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    使用命令pip show qrcode,查看是否安装成,如果输出上面信息就代表我们成功安装了qrcode模块,信息里面包含了模块的名称、版本号、总结描述、主页、作者及其联系方式等诸多信息;

    2. 第一个二维码

    代码:

    ​`import qrcode
    ​
    def gen_image(text, name):
    img = qrcode.make(text)
    with open(name, ‘wb’) as f:
    img.save(f)
    ​
    ​
    if name == ‘main’:
    test = ‘I love China’
    test_png_name = ‘test.png’
    gen_image(test, test_png_name)

    解读:

    第1行:引入模块:qrcode ,这一步是建立在安装成功的基础之上的

    第3行:定义了一个函数gen_image,这个函数所需两个参数:

    • text:待转换的文本;

    • name:待生成二维码图片的文件名;

    第4行:​img:二维码数据信息​;

    第5~6行​:将数据信息写入图片​并保存;

    第9行:if __name__ == '__main__': :控制代码执行,固定格式;

    第10行:定义了一个变量test,待转换的文本,变量值为: ‘I love China’;

    第11行:定义了一个变量test_png_name ,生成文件的名称,变量值为:‘test.png’;

    第12行:调用函数gen_image(test, test_png_name) ,并将刚定义的两个变量作为参数传值;

    以上就是代码的解析,接下来我们就要运行代码获取结果了:

    结果:

    ​验证两个点:

    二维码图片生成:
    二维码信息正确​;
    在这里插入图片描述
    由上可以看到我们的图片及二维码都成功生成了,验证二维码信息,我们可以通过手机浏览器扫描模式读取二维码信息,下图就是我扫描获取的结果:在这里插入图片描述

    3.动态根据自己输入信息生成二维码

    这里需要借助input函数获取录入值的数据信息

    代码:

    import qrcode
    ​
    ​
    def gen_image(url, name):
        img = qrcode.make(url)
        with open(name, 'wb') as f:
            img.save(f)
    ​
    ​
    if __name__ == '__main__':
        # test = 'I love China'
        # test_png_name = 'test.png'
        test = input("请输入要转换的数据: ")
        test_png_name = input("请输入保存的文件名(例如:test.png): ")
        gen_image(test, test_png_name)
    ​
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    解读:

    第1~~12行:都是原来的,我们在这没做任何修改,只是把第11~12行代码注释掉了,这两行不会参与执行​;

    第13行:借助input函数获取键盘录入信息​,即要转换的数据,并将其赋值给test :

    第14行:借助input函数获取键盘录入信息,即要保存的文件名,并将其赋值给test_png_name :

    第15行​:调用函数,跟之前一样未做变更​;

    结果:

    运行代码,会有信息录入提示,录入正确信息​:

    在这里插入图片描述

    ​生成的结果:

    验证点和之前一样这里不再赘述​;在这里插入图片描述
    在这里插入图片描述
    这样的话,我们就可以轻松的根据自己想要转换的值直接录入就能生成二维码图片,需要强调的是我们在两个input函数都没做数据校验,也是其中隐藏的一个bug,接下来我们再对这部分做下功能丰富​;

    4.增加数据校验

    代码:

    import qrcode
    ​
    ​
    def gen_image(url, name):
        img = qrcode.make(url)
        with open(name, 'wb') as f:
            img.save(f)
    ​
    ​
    if __name__ == '__main__':
        # test = 'I love China'
        # test_png_name = 'test.png'
        test = input("请输入要转换的数据: ")
        if not test:
            raise ValueError("未录入待转换的数据")
        print("如果不录入生成文件名,默认:test.png")
        test_png_name = input("请输入保存的文件名(例如:test.png): ")
        test_png_name = 'test.png' if not test_png_name else test_png_name
        gen_image(test, test_png_name)
    ​
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    解读:
    第112行:都是原来的,我们在这没做任何修改,只是把第1112行代码注释掉了,这两行不会参与执行;

    第13~15行:

    第13行:接收键盘录入数据;

    第14~15行​:​数据校验:如果test​为空抛出异常,异常信息为:“未录入待转换的数据”;

    第16行​:下一步的打印提示​;,无实际功能

    第17行​:接收键盘录入数据;

    第18行:数据校验:如果test_png_name 为空,则​用默认值:test.png, 如果不为空就使用录入的信息作为文件名

    结果:
    ​场景一:未录入待转换数据:

    请输入要转换的数据: 
    Traceback (most recent call last):
      File "D:\code\wusuowei\python_img\batchQrcode.py", line 15, in <module>
        raise ValueError("未录入待转换的数据")
    ValueError: 未录入待转换的数据
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    本节我们就简单的做了下最简单二维码的生成与人机交互下生成二维码,并针对代码的每一行都做了详细的解释;

    感兴趣的大家可以自己手动敲下代码找下感觉,跟着代码去学习~

    有问题欢迎留言,也可以关注微信公众号:魔都吴所谓,获取最新文章及答疑~~~

  • 相关阅读:
    MySQL缓存策略详解
    Mybatis 动态 SQL
    Spring @Conditional
    为什么推荐软件比自己动手更好?使用推荐软件的好处
    【快速上手教程3】疯壳·开源编队无人机-开发环境搭建
    外汇天眼:外汇走势图的三种图表,看外汇图表这三种就够了
    软件开发介绍
    Spring中的<lookup-method>标签的功能简介说明
    mssql(1433端口)介绍
    组合数学笔记-排列与组合
  • 原文地址:https://blog.csdn.net/qq_41604569/article/details/125480142