4人参与 • 2026-09-18 • Python
编程语言能否流行,一方面看语法是否简单,另一方面看生态是否丰富。所谓“生态”,就是有没有足够多的库来应对各种场景。荀子说:“君子生非异也,善假于物也。”写代码也一样,要善于利用现成的库。
python 的库大致分两类:
我们不需要背下所有库,只要知道有什么,需要时能查到即可。
标准库内容非常丰富,官方文档:https://docs.python.org/3.10/library/index.html
主要包括:内置函数、内置类型、文本处理、时间日期、数学计算、文件目录、数据存储、加密解密、操作系统、并发编程、网络编程、多媒体、图形界面等。
模块就是一个 .py 文件。使用 import 导入:
import datetime
输入两个日期,计算相差多少天:
import datetime date1 = datetime.datetime(2012, 2, 14) date2 = datetime.datetime(2022, 7, 12) print(date2 - date1)
输出:
3801 days, 0:00:00
快去算算你和心爱的人认识多少天了。
字符串是内置类型,很多方法不需要导入模块。
输入 "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.'))
判断 s 旋转若干次后能否变成 goal。
def rotate_string(s, goal):
return len(s) == len(goal) and goal in s + s
print(rotate_string('abcde', 'cdeab'))
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"))
指定搜索路径和关键字,查找文件名中包含关键字的文件。
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 安装。
pip 是 python 内置的包管理器,类似手机应用商店。python 官方用 pypi(https://pypi.org/)收集第三方库。
安装命令:
pip install 库名
如果提示 'pip' 不是内部或外部命令,说明 pip 没加入 path,需要手动配置或重装 python 时勾选“add python to path”。
安装后如果 pycharm 仍找不到模块,检查 settings -> project -> python interpreter 是否正确。
确定使用 qrcode 库。安装:
pip install qrcode[pil]
代码:
import qrcode
img = qrcode.make('我真帅')
img.save('qrcode.png')
运行后生成二维码图片,扫码即可看到内容。二维码本质是用黑白点阵表示字符串。
读取 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}')
需求:每按键 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()
实现一个命令行版本的学生管理系统,功能:
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()
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("[新增学生] 完毕!")
def show():
print("[显示学生] 开始!")
for s in students:
print(f"{s['studentid']}\t{s['name']}\t{s['gender']}\t{s['classname']}")
print(f"[显示学生] 完毕!共显示了 {len(students)} 条记录!")
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} 条记录!")
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} 条记录!")
约定存档文件 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()。
安装 pyinstaller:
pip install pyinstaller
打包:
pyinstaller -f 学生管理系统.py
-f 表示打包成单个 exe。完成后在 dist 目录下找到 exe,可拷贝到没有 python 环境的机器上运行。
import 即可用,如 datetime、os。pip install,如 qrcode、xlrd、pynput。库是编程的“外 挂”,善用库,才能把精力集中在真正要解决的问题上。
以上就是python使用库之标准库与第三方库实战指南的详细内容,更多关于python标准库与第三方库使用的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论