第三方库
认识第三方库
第三方库就是别人已经实现好了的库, 我们可以拿过来直接使用.
虽然标准库已经很强大了, 但是终究是有限的. 而第三方库可以视为是集合了全世界Python程序猿的智慧
问题来了, 当我们遇到一个需求场景的时候, 如何知道, 该使用哪个第三方库呢?
就需要用到下面几个网站了
当我们确定了该使用哪个第三方库之后, 就可以使用pip来安装第三方库了
使用pip
pip是Python内置的包管理器
所谓包管理器就类似于我们平时使用的手机app应用商店一样.
第三方库有很多, 是不同的人, 不同的组织实现的. 为了方便大家整理, Python 官方提供了一个网站PyPI来手机第三方库
其他大佬写好的第三方库也会申请上传到PyPI上.这个时候就可以方便的使用 pip 工具来下载PyPI上的库了.
pip在我们安装Python的时候就已经内置了. 无需额外安装.
pip是一个可执行程序, 就在Python的安装目录中
打开cmd, 直接输入pip. 如果显示以下帮助信息, 说明pip已经准备就绪
如果最开始按照要求在安装Python的时候勾选了,那么pip就是默认可用的
如果提示
'pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
则说明没有正确的把pip加入到PATH中, 可以手动把pip所在的路径加入到 PATH 环境变量中可参考这篇文章(或者卸载重装Python, 记得勾上上述选项, 也许是更简单的办法)
使用以下命令, 即可安装第三方库
pip install [库名]
注意: 这个命令需要从网络上下载, 使用时要保证网络畅通.
安装成功后, 即可使用import导入相关模块, 即可进行使用
注意: 如果使用pip安装完第三方库之后, 在PyCharm中仍然提示找不到对应的模块, 则检查Settings ->Project ->Python Interpreter
看当前Python解释器设置的是否正确. (如果一个机器上安装了多个版本的 Python, 容易出现这种情况)
代码示例: 生成二维码
通过搜索引擎, 确定使用哪个库
搜索可以知道我们需要使用qrcode这个库, 可以用来生成二维码
查看qrcode文档
在PyPI上搜索qrcode==>点击则进入qrcode的详情页==>文档开头描述了如何安装 qrcode==>页面中央位置描述了qrcode库的使用方法
使用pip安装
pip install qrcode[pil]
注意: pip安装的时候可能会有警告, 提示使用的pip版本太低. 这个警告我们不必处理, 不影响我们正常使用
编写代码
按照文档给出的示例, 模仿一段代码
import qrcode img = qrcode.make('汤老湿真帅') img.save('qrcode.png')
运行完毕就可以得到一个二维码,使用微信或者其他工具扫码就可以看到里面的内容
所谓二维码, 本质上就是使用黑白点阵表示一个字符串.
我们日常使用的二维码内部一般是一个 URL, 扫码后会自动跳转到对应的地址, 从而打开一个网页
代码示例: 操作exce
读取excel可以使用xlrd模块
修改excel可以使用xlrd模块
此处以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()