Python使用库(二)

Python使用库(二)

第三方库

认识第三方库

第三方库就是别人已经实现好了的库, 我们可以拿过来直接使用.
虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界 Python 程序猿的智慧, 可以说是几乎无穷无尽.
问题来了, 当我们遇到一个需求场景的时候, 如何知道, 该使用哪个第三方库呢?
就需要用到下面几个网站了:

Python使用库(二)_第1张图片

当我们确定了该使用哪个第三方库之后, 就可以使用 pip 来安装第三方库了.

使用 pip

pip 是 Python 内置的 包管理器.

所谓 包管理器 就类似于我们平时使用的手机 app 应用商店一样.
第三方库有很多, 是不同的人, 不同的组织实现的. 为了方便大家整理, Python 官方提供了一个网站PyPI https://pypi.org/, 来收集第三方库.
其他大佬写好的第三方库也会申请上传到 PyPI 上.
这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了.

pip 在我们安装 Python 的时候就已经内置了. 无需额外安装.
pip 是一个可执行程序, 就在 Python 的安装目录中.

打开 cmd, 直接输入 pip. 如果显示以下帮助信息, 说明 pip已经准备就绪

Python使用库(二)_第2张图片

如果最开始按照要求在安装 Python 的时候勾选了:

Add Python 3.10 to PATH

那么 pip 就是默认可用的.

如果提示

'pip' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

则说明没有正确的把 pip 加入到 PATH 中, 可以手动把 pip 所在的路径加入到 PATH 环境变量中. (参考 https://www.jianshu.com/p/1de0acf7185d)

或者卸载重装 Python, 记得勾上上述选项, 也许是更简单的办法.

使用以下命令, 即可安装第三方库

pip install [库名]

注意: 这个命令需要从网络上下载, 使用时要保证网络畅通.
安装成功后, 即可使用 import 导入相关模块, 即可进行使用.

注意: 如果使用 pip 安装完第三方库之后, 在 PyCharm 中仍然提示找不到对应的模块, 则检查 Settings ->Project -> Python Interpreter , 看当前 Python 解释器设置的是否正确. (如果一个机器上安装了多个版本的 Python, 容易出现这种情况).

代码示例: 生成二维码

(1) 通过搜索引擎, 确定使用哪个库

image-20221231111245728

得到情报, qrcode 这个库, 可以用来生成二维码

(2) 查看 qrcode 文档

在 PyPI 上搜索 qrcode

Python使用库(二)_第3张图片

点击则进入 qrcode 的详情页.
文档开头描述了如何安装 qrcode

image-20221231111503811

页面中央位置描述了 qrcode 库的使用方法

Python使用库(二)_第4张图片

(3) 使用 pip 安装

pip install qrcode[pil]

注意: pip 安装的时候可能会有警告, 提示使用的 pip 版本太低. 这个警告我们不必处理, 不影响我们正常使用.

(4) 编写代码

按照文档给出的示例, 模仿一段代码

import qrcode

img = qrcode.make('新年快乐!!!')
img.save('qrcode.png')

运行完毕后, 得到结果如下:

Python使用库(二)_第5张图片

使用微信或者其他工具扫码, 即可看到二维码内容.

所谓二维码, 本质上就是使用黑白点阵表示一个字符串.
我们日常使用的二维码内部一般是一个 URL, 扫码后会自动跳转到对应的地址, 从而打开一个网页.

代码示例: 操作 excel

读取 excel 可以使用 xlrd 模块. 文档地址: https://xlrd.readthedocs.io/en/latest/
修改 excel 可以使用 xlwt 模块. 文档地址: https://xlwt.readthedocs.io/en/latest/
此处以 xlrd 为例, 演示 excel 的基本操作.
需求 有如下 excel 表格 d:/test.xlsx

求 100 班的同学的平均分.

虽然 excel 自身支持很强大的功能, 也可以求和, 求平均值. 但是如果是稍微复杂的需求, 操作起来可能就没那么方便了

安装 xlrd

pip install xlrd==1.2.0

注意: 此处要指定版本号安装. 如果不指定版本号, 则安装最新版. 最新版里删除了对 xlsx 格式文件的支持

编写代码

  • 使用 open_workbook 方法打开一个 excel 文件.
  • 使用 xlsx.sheet_by_index(0) 获取到 0 号标签页.
  • 使用 table.nrows 获取到表格的行数.
  • 使用 table.cell_value(row, col) 获取到表格中 row, col 位置的元素值.
import xlrd

# 1. 打开 xlsx 文件
xlsx = xlrd.open_workbook('d:/test.xlsx')
# 2. 获取 0 号标签页. (当前只有一个标签页)
table = xlsx.sheet_by_index(0)
# 3. 获取总行数
nrows = table.nrows
# 4. 遍历数据
count = 0
total = 0
for i in range(1, nrows):
    # 使用 cell_value(row, col) 获取到指定坐标单元格的值.
    classId = table.cell_value(i, 1)
    if classId == 101:
        total += table.cell_value(i, 2)
        count += 1
print(f'平均分: {total / count}')

代码示例: “程序猿鼓励师”

监听键盘按键, 每按键 20 下, 就自动播放一个音频, 鼓励一下辛苦搬砖的自己。

安装第三方依赖

  • pynput 用于监听键盘按键. 注意版本不要用最新.
  • playsound 用于播放音频.
pip install pynput==1.6.8
pip install playsound==1.2.2

准备音频文件

此处准备了一个 ding.mp3 放到和 py 代码同级目录中.

编写代码

  • 使用 from import 的格式直接导入模块中的指定对象/函数.
  • 使用 keyboard.Listener 监听键盘按键. 其中 on_release 会在释放按键时被调用.
  • 使用 listener.start 启动监听器. 为了防止程序直接退出, 使用 listener.join 让程序等待用户按键.
  • 使用 count 计数, 每隔 10 次, 调用playsound播放音频文件。
from pynput import keyboard
from playsound import playsound

count = 0

def on_release(key):
    print(key)
    global count
    count += 1
    if count % 10 == 0:
        playsound('ding.mp3')

listener = keyboard.Listener(
	on_release=on_release)
listener.start()
listener.join()

运行程序, 即可感受到效果

改进代码

上述代码在执行过程中, 会感觉到播放音频会导致按键卡顿. 可以使用多线程解决这个问题.

关于多线程的知识, 在此处不详细介绍.

  • 使用 threading.Thread 引入多线程类.

  • 使用 Thread 的构造函数来构造一个线程. target 表示线程要执行的任务, args 表示 target 中要调用函数的参数.

  • 使用 Thread.start() 启动线程.

from pynput import keyboard
from playsound import playsound
from threading import Thread

count = 0

def on_release(key):
    print(key)
    global count
    count += 1
    if count % 10 == 0:
        t = Thread(target=playsound, args=('ding.mp3',))
        t.start()
        #playsound('ding.mp3')
        
        
listener = keyboard.Listener(
        on_release=on_release)
listener.start()
listener.join()

0:
t = Thread(target=playsound, args=(‘ding.mp3’,))
t.start()
#playsound(‘ding.mp3’)

listener = keyboard.Listener(
on_release=on_release)
listener.start()
listener.join()


你可能感兴趣的:(Python,python,pycharm,开发语言)