Python标准库与第三方库实战:二维码Excel键盘监听
Python 的库通常分为标准库和第三方库:标准库随 Python 安装,import 后即可使用;第三方库需要额外用 pip 安装。本文按标准库常用模块、第三方库安装与实战、命令行学生管理系统、pyinstaller 打包的顺序,整理 datetime、os、qrcode、xlrd、pynput、playsound 等库的落地用法。一、标准库常用模块
1. 日期计算
datetime 可以直接做日期减法,结果为 timedelta。
import datetime
date1 = datetime.datetime(2012, 2, 14)
date2 = datetime.datetime(2022, 7, 12)
print(date2 - date1)
输出为 3801 days, 0:00:00。这个例子可用于计算两个日期相差多少天。
2. 字符串操作
字符串是内置类型,很多方法不用导入模块。
翻转单词顺序:
def reverse_words(s):
tokens = s.split()
tokens.reverse()
return ' '.join(tokens)
print(reverse_words('I am a student.'))
输入 I am a student.,输出 student. a am I。思路是按空白切分成单词,反转列表后再用空格拼接。
判断旋转字符串:
def rotate_string(s, goal):
return len(s) == len(goal) and goal in s + s
print(rotate_string('abcde', 'cdeab'))
如果 goal 是 s 旋转若干次后的结果,那么 goal 一定存在于 s+s 中,同时长度必须相等。
统计是给定字符串前缀的字符串数目:
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'))
这里用 s.startswith(word) 判断前缀,符合条件的字符串会累加计数。
3. 文件查找工具
指定搜索路径和关键词,查找文件名中包含关键词的文件。
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 返回三元组:当前路径、目录名列表、文件名列表。遍历 filenames 即可对文件名做包含判断。
二、第三方库安装与实战
遇到需求时,先搜索适合的库,再用 pip 安装。pip 是 Python 内置包管理器,PyPI 用于收集第三方库。常用命令:
pip install 库名
如果提示 'pip' 不是内部或外部命令,说明 pip 没有加入 PATH,需要配置 PATH,或在重装 Python 时勾选 Add Python to PATH。安装后如果 PyCharm 仍找不到模块,检查 Settings -> Project -> Python Interpreter 是否选对解释器。
1. 生成二维码
安装 qrcode:
pip install qrcode
代码:
import qrcode
img = qrcode.make('我真帅')
img.save('qrcode.png')
运行后生成 qrcode.png,扫码即可看到内容。二维码本质是用黑白点阵表示字符串。
2. 用 xlrd 操作 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}')
代码打开第一张工作表,nrows 取总行数,从第 1 行开始跳过表头;第 1 列是班级,第 2 列是分数。
3. 监听键盘按键,自动播放音频
需求:每按键 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()
把播放动作放到子线程,监听回调不再等待音频播放结束。
三、综合案例:命令行学生管理系统
功能包括新增学生、显示学生、查找学生、删除学生、存档到文件。核心数据结构是 students 列表,每个学生用字典保存 studentId、name、gender、className。
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(s['studentId'], s['name'], s['gender'], s['className'], sep='\t')
print(f'[显示学生] 完毕!共显示了 {len(students)} 条记录!')
4. 查找学生
def find():
print('[查找学生] 开始!')
name = input('请输入要查找的同学姓名:')
count = 0
for s in students:
if name == s['name']:
print(s['studentId'], s['name'], s['gender'], s['className'], sep='\t')
count += 1
print(f'[查找学生] 完毕!共查找到 {count} 条记录!')
5. 删除学生
def delete():
print('[删除学生] 开始!')
student_id = input('请输入要删除的同学学号:')
count = 0
for s in students:
if student_id == s['studentId']:
print('删除', s['name'], '同学的信息!')
students.remove(s)
count += 1
save()
print(f'[删除学生] 完毕!共删除 {count} 条记录!')
6. 存档与读档
约定存档文件为 d:/record.txt,每行一个学生,字段用制表符分隔。
存档:
def save():
with open('d:/record.txt', 'w', encoding='utf8') as f:
for s in students:
f.write('{}\t{}\t{}\t{}\n'.format(s['studentId'], s['name'], s['gender'], s['className']))
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,
'name': parts,
'gender': parts,
'className': parts
}
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 环境的机器上运行。库是编程的外挂,善用库,才能把精力集中在真正要解决的问题上。
Re: Python标准库与第三方库实战:二维码Excel键盘监听
这篇整理得很实用,标准库和第三方库的区别讲得挺清楚。datetime 算日期差、字符串旋转判断、os.walk 查找文件这几个例子都很适合拿来练手。xlrd 必须指定 1.2.0 才能读 xlsx 这个坑确实容易踩,装完还要确认 PyCharm 里选对解释器,不然很容易一直提示找不到模块。pynput 监听按键、每十次播放一次音频的思路挺有意思,不过直接播放会卡顿,改成多线程就顺很多。楼主最后多线程那段代码好像没贴完,args 后面断了,方便的话可以补一下完整实现,想跟着试试。Re: Python标准库与第三方库实战:二维码Excel键盘监听
感谢分享,这篇把标准库和第三方库的常见用法串得很清楚,对刚入门 Python 的人很友好。日期相减得到 timedelta、字符串翻转和前缀统计、os.walk 查找文件这些例子都很直接,抄下来就能跑。第三方库部分也很接地气,qrcode 生成二维码、xlrd 读 Excel、pynput 监听键盘配合 playsound 播放音频,都是实际会用到的场景。特别提醒 xlrd 要装 1.2.0、pip 没进 PATH 以及 PyCharm 解释器选择问题,这些坑很实在。多线程播放音频避免按键卡顿的思路也很清楚。等后面 pyinstaller 打包部分再展开就更完整了。感谢整理!Re: Python标准库与第三方库实战:二维码Excel键盘监听
整理得挺全面,标准库和第三方库分开讲,例子也很接地气。datetime 做日期减法、os.walk 按关键词找文件、字符串那几道小题,都适合拿来练手。第三方库部分,qrcode 生成二维码、xlrd 指定 1.2.0 读 xlsx、pynput 监听键盘配合 playsound 按次数播放,都是能直接跑起来的小项目。尤其是提到播放音频会卡顿,再用多线程处理,这个思路很关键,不然监听和播放互相影响,体验会差很多。安装部分提醒 PATH 和 PyCharm 解释器也很实用,新手很容易卡在这里。期待后面命令行学生管理系统和 pyinstaller 打包的内容。
页:
[1]