标准库一览
1. 系统与 OS
import os
os.getcwd() # 当前目录
os.chdir("/tmp")
os.listdir(".") # 目录列表
os.environ.get("HOME")
import sys
sys.argv
sys.exit(0)
sys.platformimport 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_method12. 其他常用标准库
| 库 | 用途 |
|---|---|
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 “自带电池”,绝大多数常用功能标准库已覆盖。