当前位置: 代码网 > it编程>前端脚本>Python > Python使用库之标准库与第三方库实战指南

Python使用库之标准库与第三方库实战指南

2026年09月18日 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 即可用,如 datetimeos
  • 第三方库:需要 pip install,如 qrcodexlrdpynput
  • 实际开发中要善于搜索、阅读文档、利用现成库。
  • 综合案例串联了函数、列表、字典、文件操作、异常处理等知识,是很好的练习。
  • 打包成 exe 可以让程序在没有 python 环境的机器上运行。

库是编程的“外 挂”,善用库,才能把精力集中在真正要解决的问题上。

以上就是python使用库之标准库与第三方库实战指南的详细内容,更多关于python标准库与第三方库使用的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com