标准库一览

翻译整理自 Python Standard Library - Brief Tour。

1. 系统与 OS

import os
os.getcwd()                 # 当前目录
os.chdir("/tmp")
os.listdir(".")             # 目录列表
os.environ.get("HOME")

import sys
sys.argv
sys.exit(0)
sys.platform
import shutil
shutil.copyfile("a", "b")
shutil.rmtree("tmpdir")
shutil.make_archive("data", "zip", "data/")

2. 文件通配

import glob
glob.glob("*.py")

3. 命令行参数

import argparse
parser = argparse.ArgumentParser(description="Process something.")
parser.add_argument("file", help="input file")
parser.add_argument("-n", "--num", type=int, default=1)
parser.add_argument("-v", "--verbose", action="store_true")
args = parser.parse_args()

4. 系统退出与 stderr

import sys
sys.stderr.write("warning\n")
sys.exit(1)

5. 字符串正则

import re
re.findall(r"\d+", "a12b34")          # ['12', '34']
re.sub(r"\s+", " ", "  hello   ")     # ' hello '
m = re.match(r"(\w+)@(\w+)", "[email protected]")
m.group(1)  # 'a'

6. 数学

import math
math.sqrt(16)
math.pi
math.log(8, 2)

import random
random.random()
random.randint(1, 6)
random.choice(["a", "b"])
random.shuffle(my_list)

7. 互联网访问

from urllib.request import urlopen
with urlopen("https://example.com") as r:
    body = r.read().decode()

import smtplib
server = smtplib.SMTP("localhost")
server.sendmail("[email protected]", ["[email protected]"], "Subject: Hi\n\nHi")
server.quit()

8. 日期与时间

from datetime import date, datetime, timedelta
today = date.today()
now = datetime.now()
delta = timedelta(days=7)
print(today + delta)

9. 数据压缩

import zlib
zlib.compress(b"Hello" * 100)
zlib.decompress(...)

import gzip
with gzip.open("file.gz", "rt") as f:
    text = f.read()

10. 度量性能

from timeit import Timer
Timer("s.sort()", "s=[3,1,2]").timeit()

import time
start = time.perf_counter()
# ...
print("elapsed:", time.perf_counter() - start)

11. 测试

import unittest

class TestStringMethods(unittest.TestCase):
    def test_upper(self):
        self.assertEqual("foo".upper(), "FOO")

if __name__ == "__main__":
    unittest.main()
python -m unittest test_module
python -m unittest test_module.TestClass.test_method

12. 其他常用标准库

库 用途
collections deque、Counter、defaultdict、namedtuple
itertools 链式迭代器
functools reduce、lru_cache、partial
json / csv 结构化数据
subprocess 调用子进程
threading / multiprocessing 并发
asyncio 异步 IO
logging 日志
pathlib 路径对象
typing 类型注解
enum 枚举
sqlite3 内置 SQLite
http / http.server HTTP

小结

Python “自带电池”,绝大多数常用功能标准库已覆盖。