参考:廖雪峰 - 常用内建模块

Python 内建模块

1. collections

namedtuple

命名元组,用名字访问元素:

from collections import namedtuple
 
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)  # 1 2

deque

双端队列,适合队列和栈:

from collections import deque
 
q = deque(['a', 'b', 'c'])
q.append('x')
q.appendleft('y')
print(q)  # deque(['y', 'a', 'b', 'c', 'x'])

defaultdict

带默认值的字典:

from collections import defaultdict
 
dd = defaultdict(lambda: 'N/A')
dd['key1'] = 'abc'
print(dd['key1'])  # 'abc'
print(dd['key2'])  # 'N/A'

OrderedDict

有序字典(Python 3.7+ 普通 dict 已有序):

from collections import OrderedDict
 
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)  # OrderedDict([('a', 1), ('b', 2), ('c', 3)])

Counter

计数器:

from collections import Counter
 
c = Counter('programming')
print(c)  # Counter({'r': 2, 'g': 2, 'm': 2, ...})
c.update('hello')

2. os 模块

详细指南参见 Python os模块使用指南

路径操作(os.path)

import os
 
# 路径拼接
os.path.join('/usr', 'local', 'bin')  # '/usr/local/bin'
 
# 路径分解
os.path.split('/usr/local/bin/python')  # ('/usr/local/bin', 'python')
os.path.splitext('/path/to/file.txt')   # ('/path/to/file', '.txt')
 
# 获取信息
os.path.dirname('/path/to/file.txt')   # '/path/to'
os.path.basename('/path/to/file.txt')  # 'file.txt'
 
# 检查
os.path.exists('/path/to/file')
os.path.isfile('/path/to/file')
os.path.isdir('/path/to/dir')
os.path.isabs('/path/to/file')
 
# 规范化
os.path.abspath('file.txt')
os.path.realpath('/path/to/link')

文件和目录操作

import os
 
# 目录操作
os.mkdir('new_dir')
os.makedirs('a/b/c')  # 递归创建
os.rmdir('empty_dir')
os.removedirs('a/b/c')
 
# 文件操作
os.remove('file.txt')
os.rename('old.txt', 'new.txt')
 
# 遍历
for root, dirs, files in os.walk('.'):
    for file in files:
        print(os.path.join(root, file))

环境变量

import os
 
os.environ.get('PATH')
os.environ['MY_VAR'] = 'value'

3. sys 模块

查看 Python 版本

import sys
 
print(sys.version)           # 完整字符串,带编译信息
print(sys.version_info)      # 具名元组 (major, minor, micro, …)

其他常用

import sys
 
sys.argv          # 命令行参数列表
sys.path          # 模块搜索路径
sys.platform      # 操作系统平台
sys.exit(0)       # 退出程序

4. datetime

from datetime import datetime, timedelta
 
# 当前时间
now = datetime.now()
 
# 格式化
now.strftime('%Y-%m-%d %H:%M:%S')
 
# 解析
datetime.strptime('2024-01-01', '%Y-%m-%d')
 
# 时间运算
tomorrow = now + timedelta(days=1)

5. argparse

命令行参数解析:

import argparse
 
parser = argparse.ArgumentParser()
parser.add_argument('--name', type=str, default='World')
parser.add_argument('--count', type=int, default=1)
args = parser.parse_args()
 
print(f"Hello {args.name} " * args.count)

6. hashlib

哈希算法:

import hashlib
 
md5 = hashlib.md5()
md5.update('hello'.encode('utf-8'))
print(md5.hexdigest())
 
sha256 = hashlib.sha256()
sha256.update('hello'.encode('utf-8'))
print(sha256.hexdigest())

7. base64

Base64 编解码:

import base64
 
encoded = base64.b64encode(b'hello')
print(encoded)  # b'aGVsbG8='
 
decoded = base64.b64decode(encoded)
print(decoded)  # b'hello'

8. json

JSON 处理:

import json
 
# 序列化
json_str = json.dumps({'name': 'Alice', 'age': 30})
json_bytes = json.dumps({'name': 'Alice'}, ensure_ascii=False).encode('utf-8')
 
# 反序列化
obj = json.loads('{"name": "Alice", "age": 30}')
 
# 文件操作
with open('data.json', 'w') as f:
    json.dump(obj, f)
 
with open('data.json', 'r') as f:
    obj = json.load(f)

9. platform

系统信息:

import platform
 
print(platform.python_version())        # '3.11.2'
print(platform.python_version_tuple())  # ('3', '11', '2')
print(platform.system())                # 'Darwin', 'Linux', 'Windows'
print(platform.machine())               # 'x86_64', 'arm64'