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

 更新时间:2026年09月18日 09:16:17   作者:aramae  
想学Python但不知道有哪些库可用,本文带你快速了解Python标准库和第三方库,包括日期计算、文件查找、二维码生成、Excel操作等实用示例,还有学生管理系统实战和打包exe教程,让你轻松上手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标准库与第三方库使用的资料请关注脚本之家其它相关文章!

相关文章

  • 深入了解Python中描述器的使用

    深入了解Python中描述器的使用

    Python描述器是Python编程语言中的一个重要特性,它提供了一种灵活且强大的机制来控制属性访问行为。在本文中,我们将详细介绍Python描述器的概念、实现方式以及如何使用Python描述器来增强我们的Python程序
    2023-03-03
  • Python的MongoDB模块PyMongo操作方法集锦

    Python的MongoDB模块PyMongo操作方法集锦

    这篇文章主要介绍了Python的MongoDB模块PyMongo操作方法集锦,包括数据的增删查改以及索引等相关的基本操作,需要的朋友可以参考下
    2016-01-01
  • python 二维数组90度旋转的方法

    python 二维数组90度旋转的方法

    今天小编就为大家分享一篇python 二维数组90度旋转的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • django项目环境搭建及在虚拟机本地创建django项目的教程

    django项目环境搭建及在虚拟机本地创建django项目的教程

    这篇文章主要介绍了django项目环境搭建及在虚拟机本地创建django项目的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python中not not x 与bool(x) 的区别

    python中not not x 与bool(x) 的区别

    这篇文章主要介绍了python中not not x 与 bool(x) 的区别,我们就来做一个选择,就是 not not x 和 bool(x) 用哪个比较好?下面一起进入文章看看吧

    2021-12-12
  • 深度解析Python线程和进程

    深度解析Python线程和进程

    这篇文章主要介绍了Python线程和进程的相关知识,包括线程与进程的区别,通过示例代码介绍了进程与线程的操作方法,需要的朋友可以参考下
    2022-04-04
  • 基于PyInstaller各参数的含义说明

    基于PyInstaller各参数的含义说明

    这篇文章主要介绍了基于PyInstaller各参数的含义说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解Python 多线程 Timer定时器/延迟执行、Event事件

    详解Python 多线程 Timer定时器/延迟执行、Event事件

    这篇文章主要介绍了Python 多线程 Timer定时器/延迟执行、Event事件的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • python操作xlsx文件的包openpyxl实例

    python操作xlsx文件的包openpyxl实例

    下面小编就为大家分享一篇python操作xlsx文件的包openpyxl实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python中动态检测编码chardet的使用教程

    Python中动态检测编码chardet的使用教程

    最近利用python抓取一些网上的数据,遇到了编码的问题。非常头痛,幸运的是找到了解决的方法,下面这篇文章主要跟大家介绍了关于Python中动态检测编码chardet的使用方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07

最新评论