Python使用库之标准库与第三方库实战指南
编程语言能否流行,一方面看语法是否简单,另一方面看生态是否丰富。所谓“生态”,就是有没有足够多的库来应对各种场景。荀子说:“君子生非异也,善假于物也。”写代码也一样,要善于利用现成的库。
Python 的库大致分两类:
- 标准库:Python 自带,安装即可用。
- 第三方库:别人写的库,需要额外安装。
我们不需要背下所有库,只要知道有什么,需要时能查到即可。
一、标准库
标准库内容非常丰富,官方文档:https://docs.python.org/3.10/library/index.html
主要包括:内置函数、内置类型、文本处理、时间日期、数学计算、文件目录、数据存储、加密解密、操作系统、并发编程、网络编程、多媒体、图形界面等。
1. import 导入模块
模块就是一个 .py 文件。使用 import 导入:
import datetime
2. 日期计算
输入两个日期,计算相差多少天:
import datetime date1 = datetime.datetime(2012, 2, 14) date2 = datetime.datetime(2022, 7, 12) print(date2 - date1)
输出:
3801 days, 0:00:00
快去算算你和心爱的人认识多少天了。
3. 字符串操作
字符串是内置类型,很多方法不需要导入模块。
(1)翻转单词顺序
输入 "I am a student.",输出 "student. a am I"。
def reverse_words(s):
tokens = s.split()
tokens.reverse()
return ' '.join(tokens)
print(reverse_words('I am a student.'))
(2)旋转字符串
判断 s 旋转若干次后能否变成 goal。
def rotate_string(s, goal):
return len(s) == len(goal) and goal in s + s
print(rotate_string('abcde', 'cdeab'))
(3)统计是给定字符串前缀的字符串数目
def count_prefixes(words, s):
res = 0
for word in words:
if s.startswith(word):
res += 1
return res
print(count_prefixes(["a", "b", "c", "ab", "bc", "abc"], "abc"))
4. 文件查找工具
指定搜索路径和关键字,查找文件名中包含关键字的文件。
import os
input_path = input("请输入待搜索路径:")
pattern = input("请输入待搜索关键词:")
for dirpath, dirnames, filenames in os.walk(input_path):
for f in filenames:
if pattern in f:
print(f'{dirpath}/{f}')
os.walk 返回三元组:当前路径、目录名列表、文件名列表。
更多 os 操作参考官方文档:https://docs.python.org/3/library/os.html
二、第三方库
标准库虽然强大,但终究有限。第三方库集合了全世界 Python 程序员的智慧,几乎无穷无尽。
遇到需求时,可以用搜索引擎查找该用哪个库。确定后,用 pip 安装。
1. pip 安装
pip 是 Python 内置的包管理器,类似手机应用商店。Python 官方用 PyPI(https://pypi.org/)收集第三方库。
安装命令:
pip install 库名
如果提示 'pip' 不是内部或外部命令,说明 pip 没加入 PATH,需要手动配置或重装 Python 时勾选“Add Python to PATH”。
安装后如果 PyCharm 仍找不到模块,检查 Settings -> Project -> Python Interpreter 是否正确。
2. 生成二维码
确定使用 qrcode 库。安装:
pip install qrcode[pil]
代码:
import qrcode
img = qrcode.make('我真帅')
img.save('qrcode.png')
运行后生成二维码图片,扫码即可看到内容。二维码本质是用黑白点阵表示字符串。
3. 操作 Excel
读取 Excel 使用 xlrd,修改使用 xlwt。这里以 xlrd 为例。
安装(注意指定版本,最新版删除了 xlsx 支持):
pip install xlrd==1.2.0
假设有 d:/test.xlsx,求 101 班平均分:
import xlrd
xlsx = xlrd.open_workbook('d:/test.xlsx')
table = xlsx.sheet_by_index(0)
nrows = table.nrows
count = 0
total = 0
for i in range(1, nrows):
class_id = table.cell_value(i, 1)
if class_id == 101:
total += table.cell_value(i, 2)
count += 1
print(f'平均分:{total / count}')
4. 监听键盘按键,自动播放音频
需求:每按键 10 次,播放一个音频鼓励自己。
安装:
pip install pynput==1.6.8 pip install playsound==1.2.2
准备 ding.mp3 放在同级目录。
代码:
from pynput import keyboard
from playsound import playsound
count = 0
def on_release(key):
global count
print(key)
count += 1
if count % 10 == 0:
playsound('ding.mp3')
listener = keyboard.Listener(on_release=on_release)
listener.start()
listener.join()
播放音频会导致按键卡顿,可以用多线程改进:
from pynput import keyboard
from playsound import playsound
from threading import Thread
count = 0
def on_release(key):
global count
print(key)
count += 1
if count % 10 == 0:
t = Thread(target=playsound, args=('ding.mp3',))
t.start()
listener = keyboard.Listener(on_release=on_release)
listener.start()
listener.join()
三、综合案例:学生管理系统
实现一个命令行版本的学生管理系统,功能:
- 新增学生
- 显示学生
- 查找学生
- 删除学生
- 存档到文件
1. 入口函数
import sys
import os
students = []
def menu():
print("1. 新增学生信息")
print("2. 显示所有同学信息")
print("3. 根据名字查找学生信息")
print("4. 删除学生信息")
print("0. 退出程序")
choice = input("请输入您的选择:")
return int(choice)
def main():
print("+----------------------------+")
print("| 欢迎来到学生管理系统! |")
print("+----------------------------+")
while True:
choice = menu()
if choice == 0:
sys.exit()
elif choice == 1:
insert()
elif choice == 2:
show()
elif choice == 3:
find()
elif choice == 4:
delete()
else:
print("您的输入有误!请重新输入!")
if __name__ == '__main__':
main()
2. 新增学生
def insert():
print("[新增学生] 开始!")
student_id = input("请输入学生的学号:")
name = input("请输入学生的姓名:")
gender = input("请输入学生的性别:")
if gender not in ('男', '女'):
print("性别不符合要求!新增学生失败!")
return
class_name = input("请输入学生的班级:")
student = {
'studentId': student_id,
'name': name,
'gender': gender,
'className': class_name
}
global students
students.append(student)
save()
print("[新增学生] 完毕!")
3. 显示学生
def show():
print("[显示学生] 开始!")
for s in students:
print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f"[显示学生] 完毕!共显示了 {len(students)} 条记录!")
4. 查找学生
def find():
print("[查找学生] 开始!")
name = input("请输入要查找的同学姓名:")
count = 0
for s in students:
if name == s['name']:
print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")
count += 1
print(f"[查找学生] 完毕!共查找到 {count} 条记录!")
5. 删除学生
def delete():
print("[删除学生] 开始!")
student_id = input("请输入要删除的同学学号:")
count = 0
for s in students:
if student_id == s['studentId']:
print(f"删除 {s['name']} 同学的信息!")
students.remove(s)
count += 1
save()
print(f"[删除学生] 完毕!共删除 {count} 条记录!")
6. 存档与读档
约定存档文件 d:/record.txt,每行一个学生,字段用 \t 分隔。
存档:
def save():
with open('d:/record.txt', 'w', encoding='utf8') as f:
for s in students:
f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")
print(f"[存档成功] 共存储了 {len(students)} 条记录!")
读档:
def load():
if not os.path.exists('d:/record.txt'):
return
global students
students = []
with open('d:/record.txt', 'r', encoding='utf8') as f:
for line in f:
line = line.strip()
if not line:
continue
parts = line.split('\t')
student = {
'studentId': parts[0],
'name': parts[1],
'gender': parts[2],
'className': parts[3]
}
students.append(student)
在 main() 开头调用 load()。
7. 打包成 exe
安装 pyinstaller:
pip install pyinstaller
打包:
pyinstaller -F 学生管理系统.py
-F 表示打包成单个 exe。完成后在 dist 目录下找到 exe,可拷贝到没有 Python 环境的机器上运行。
四、总结
- 标准库:Python 自带,
import即可用,如datetime、os。 - 第三方库:需要
pip install,如qrcode、xlrd、pynput。 - 实际开发中要善于搜索、阅读文档、利用现成库。
- 综合案例串联了函数、列表、字典、文件操作、异常处理等知识,是很好的练习。
- 打包成 exe 可以让程序在没有 Python 环境的机器上运行。
库是编程的“外 挂”,善用库,才能把精力集中在真正要解决的问题上。
以上就是Python使用库之标准库与第三方库实战指南的详细内容,更多关于Python标准库与第三方库使用的资料请关注脚本之家其它相关文章!
相关文章
django项目环境搭建及在虚拟机本地创建django项目的教程
这篇文章主要介绍了django项目环境搭建及在虚拟机本地创建django项目的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-08-08
详解Python 多线程 Timer定时器/延迟执行、Event事件
这篇文章主要介绍了Python 多线程 Timer定时器/延迟执行、Event事件的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-06-06


最新评论