Skip to content
 

Python 常用的内置模块

更新: 9/24/2025字数: 0 字 时长: 0 分钟

Python 提供了丰富的内置模块,无需安装即可直接使用。

1. 文件和目录操作

os - 操作系统接口

python
import os

# 文件和目录操作
print(os.getcwd())          # 获取当前工作目录
os.chdir('/path/to/dir')    # 改变当前目录
os.listdir('.')             # 列出目录内容

# 路径操作
os.path.join('dir', 'file.txt')    # 连接路径
os.path.exists('file.txt')         # 检查路径是否存在
os.path.isdir('dirname')           # 检查是否为目录
os.path.isfile('filename')         # 检查是否为文件
os.path.getsize('file.txt')        # 获取文件大小

# 系统操作
os.environ['PATH']                 # 环境变量
os.system('ls -l')                 # 执行系统命令

pathlib - 面向对象的路径操作(Python 3.4+)

python
from pathlib import Path

# 创建路径对象
p = Path('/home/user/documents')
p = Path.cwd() / 'file.txt'        # 路径拼接

# 常用操作
p.exists()                         # 检查是否存在
p.is_file()                        # 是否为文件
p.name                             # 文件名
p.parent                           # 父目录
p.suffix                           # 文件扩展名

# 文件操作
p.read_text()                      # 读取文本
p.write_text('content')            # 写入文本

2. 系统相关

sys - 系统相关参数和函数

python
import sys

# 命令行参数
print(sys.argv)                    # 命令行参数列表

# Python 解释器信息
print(sys.version)                 # Python 版本
print(sys.platform)                # 操作系统平台
print(sys.path)                    # 模块搜索路径

# 标准输入输出
sys.stdout.write('Hello\n')        # 标准输出
sys.stderr.write('Error\n')        # 标准错误

# 退出程序
sys.exit(0)                        # 退出程序

3. 日期和时间

datetime - 日期和时间处理

python
from datetime import datetime, date, time, timedelta

# 当前时间
now = datetime.now()
print(now)                         # 2024-01-15 10:30:45.123456

# 日期时间创建
dt = datetime(2024, 1, 15, 10, 30, 0)
d = date(2024, 1, 15)
t = time(10, 30, 0)

# 格式化
print(now.strftime('%Y-%m-%d %H:%M:%S'))  # 2024-01-15 10:30:45
print(now.strftime('%A, %B %d'))          # Monday, January 15

# 时间计算
tomorrow = now + timedelta(days=1)
last_week = now - timedelta(weeks=1)

# 时间解析
dt = datetime.strptime('2024-01-15', '%Y-%m-%d')

time - 时间访问和转换

python
import time

# 时间戳
print(time.time())                  # 当前时间戳(秒)

# 休眠
time.sleep(2)                      # 休眠2秒

# 结构化时间
local_time = time.localtime()
print(time.strftime('%Y-%m-%d', local_time))

# 性能计时
start = time.perf_counter()
# 执行一些操作
end = time.perf_counter()
print(f'耗时: {end - start:.2f}秒')

4. 数学运算

math - 数学函数

python
import math

# 基本数学函数
print(math.sqrt(16))               # 平方根: 4.0
print(math.pow(2, 3))              # 幂运算: 8.0
print(math.log(100, 10))           # 对数: 2.0

# 三角函数
print(math.sin(math.pi/2))         # 正弦: 1.0
print(math.degrees(math.pi))       # 弧度转角度: 180.0

# 常数
print(math.pi)                     # π: 3.141592653589793
print(math.e)                      # 自然常数: 2.718281828459045

# 取整函数
print(math.ceil(4.2))              # 向上取整: 5
print(math.floor(4.8))             # 向下取整: 4

random - 生成随机数

python
import random

# 随机数
print(random.random())             # [0.0, 1.0) 的随机浮点数
print(random.randint(1, 10))       # [1, 10] 的随机整数

# 序列操作
items = [1, 2, 3, 4, 5]
random.shuffle(items)              # 打乱序列
print(random.choice(items))        # 随机选择一个元素
print(random.sample(items, 3))     # 随机选择多个不重复元素

# 随机种子(用于重现结果)
random.seed(42)                    # 设置随机种子

5. 数据序列化

json - JSON 编码和解码

python
import json

# Python 对象转 JSON 字符串
data = {
    'name': '张三',
    'age': 25,
    'scores': [90, 85, 95]
}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

# JSON 字符串转 Python 对象
parsed_data = json.loads(json_str)
print(parsed_data['name'])

# 文件操作
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

with open('data.json', 'r', encoding='utf-8') as f:
    loaded_data = json.load(f)

pickle - Python 对象序列化

python
import pickle

data = {'name': '李四', 'age': 30}

# 序列化到文件
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f)

# 从文件反序列化
with open('data.pkl', 'rb') as f:
    loaded_data = pickle.load(f)

6. 数据压缩和归档

zipfile - ZIP 归档处理

python
import zipfile

# 创建 ZIP 文件
with zipfile.ZipFile('archive.zip', 'w') as zf:
    zf.write('file1.txt')
    zf.write('file2.txt')

# 读取 ZIP 文件
with zipfile.ZipFile('archive.zip', 'r') as zf:
    print(zf.namelist())           # 列出所有文件
    zf.extractall('extracted')     # 解压所有文件

7. 网络和互联网

urllib - URL 处理

python
from urllib import request, parse

# 发送 HTTP 请求
response = request.urlopen('https://httpbin.org/json')
data = response.read().decode('utf-8')
print(data)

# URL 编码解码
params = {'q': 'python 教程', 'page': 1}
encoded = parse.urlencode(params)
print(encoded)                     # q=python+%E6%95%99%E7%A8%8B&page=1

8. 数据类型和集合

collections - 容器数据类型

python
from collections import Counter, defaultdict, deque, namedtuple

# Counter - 计数器
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_count = Counter(words)
print(word_count.most_common(2))   # [('apple', 3), ('banana', 2)]

# defaultdict - 带默认值的字典
dd = defaultdict(list)
dd['fruits'].append('apple')
dd['fruits'].append('banana')
print(dd['fruits'])                # ['apple', 'banana']

# deque - 双端队列
dq = deque([1, 2, 3])
dq.appendleft(0)                   # 左侧添加
dq.append(4)                       # 右侧添加
print(dq)                          # deque([0, 1, 2, 3, 4])

# namedtuple - 命名元组
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y)                    # 10 20

itertools - 迭代器工具

python
import itertools

# 无限迭代器
counter = itertools.count(start=1, step=2)  # 1, 3, 5, 7...

# 组合迭代器
# 排列
perms = itertools.permutations('ABC', 2)   # AB, AC, BA, BC, CA, CB
# 组合
combs = itertools.combinations('ABC', 2)   # AB, AC, BC

# 分组
data = [1, 1, 2, 2, 3, 3]
groups = itertools.groupby(data)           # 分组相邻重复元素

9. 正则表达式

re - 正则表达式

python
import re

# 匹配
text = '我的电话是: 138-1234-5678'
pattern = r'\d{3}-\d{4}-\d{4}'
match = re.search(pattern, text)
if match:
    print('找到电话:', match.group())      # 138-1234-5678

# 查找所有
emails = 'a@test.com, b@example.com'
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails_found = re.findall(email_pattern, emails)

# 替换
text = 'Python is great, I love Python'
new_text = re.sub(r'Python', 'JavaScript', text)
print(new_text)                     # JavaScript is great, I love JavaScript

10. 调试和测试

logging - 日志记录

python
import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    filename='app.log'
)

# 记录日志
logging.debug('调试信息')
logging.info('一般信息')
logging.warning('警告信息')
logging.error('错误信息')
logging.critical('严重错误')

pdb - Python 调试器

python
import pdb

def problematic_function(x, y):
    pdb.set_trace()  # 设置断点
    result = x / y
    return result

# 常用 pdb 命令:
# n - 执行下一行
# c - 继续执行
# q - 退出调试
# p variable - 打印变量值

实用示例项目

文件管理器工具

python
import os
import shutil
from pathlib import Path
from datetime import datetime

class FileManager:
    def __init__(self, base_path='.'):
        self.base_path = Path(base_path)

    def list_files(self, pattern='*'):
        """列出文件"""
        files = list(self.base_path.glob(pattern))
        for file in files:
            size = file.stat().st_size
            mtime = datetime.fromtimestamp(file.stat().st_mtime)
            print(f'{file.name:20} {size:10} {mtime:%Y-%m-%d %H:%M}')

    def backup_files(self, pattern='*.txt', backup_dir='backup'):
        """备份文件"""
        backup_path = self.base_path / backup_dir
        backup_path.mkdir(exist_ok=True)

        for file in self.base_path.glob(pattern):
            shutil.copy2(file, backup_path / file.name)
            print(f'备份: {file.name}')

    def find_large_files(self, size_mb=10):
        """查找大文件"""
        size_limit = size_mb * 1024 * 1024
        for file in self.base_path.rglob('*'):
            if file.is_file() and file.stat().st_size > size_limit:
                size_mb = file.stat().st_size / (1024 * 1024)
                print(f'{file.name} - {size_mb:.1f} MB')

# 使用示例
if __name__ == '__main__':
    fm = FileManager()
    fm.list_files('*.py')
    fm.find_large_files(5)

总结表:最常用的内置模块

模块主要用途使用频率
os操作系统接口⭐⭐⭐⭐⭐
sys系统参数和函数⭐⭐⭐⭐
datetime日期时间处理⭐⭐⭐⭐⭐
jsonJSON 数据处理⭐⭐⭐⭐⭐
pathlib面向对象路径操作⭐⭐⭐⭐
collections扩展容器类型⭐⭐⭐⭐
re正则表达式⭐⭐⭐
math数学运算⭐⭐⭐
random随机数生成⭐⭐⭐
itertools迭代器工具⭐⭐

我见青山多妩媚,料青山见我应如是。