本页面是俺收集的各种 Python 资源,不定期更新。
下面列出的各种 Python 库/模块/工具,如果名称带超链接,说明是第三方的;否则是 Python 语言内置的。
1 算法
1.1 字符串处理
re
正则表达式的标准库。
StringIO / cStringIO
以读写文件的方式来操作字符串(有点类似于内存文件)。
cStringIO 是 C 语言实现的,提供高性能;而 StringIO 是 Python 实现的,提供 Unicode 兼容性。
chardet 可以猜测任意一段文本的字符集编码。对于编码类型未知的文本,它会很有用。
chardet 既可以作为模块来使用,也可以作为命令行工具来使用。
代码示例
import chardet
print chardet.detect(bytes)
1.2 数学类
math
这个标准库顾名思义,封装了常用的数学函数(开方、指数、对数、三角函数、等)
random
这个标准库顾名思义,是用来进行随机数生成的
代码示例
# 生成 0-100 的随机数
import random
random.seed()
random.randint(0, 100)
fractions
这个标准库封装了跟有理数(分数)相关的运算
1.3 安全类
hashlib
在 Python 2.5 版本加入到标准库中。通过它,你可以很方便地计算各种散列值。
它支持的哈希算法有:MD5 SHA1 SHA224 SHA256 SHA384 SHA512
关于散列算法,俺写过一篇扫盲(在这里)。
代码示例
# 计算字符串的 SHA1 散列值
import hashlib
sha1 = hashlib.sha1('Hello world').hexdigest()
这个库包含了常见的对称加密算法(DES、AES、IDEA、等)、公钥加密算法(RSA、DSA、等)、散列算法(MD5、SHA1、RIPEMD、等)。
OpenSSL 在加密领域可是大名鼎鼎。这个库使用 Python 对 OpenSSL 进行很薄的封装。
2 跨编程语言
Python 可以很容易地跟其它编程语言整合。整合之后,就可以在 Python 代码中使用其它编程语言的函数、模块、库,非常爽!
2.1 整合 C / C++ 语言
ctypes
ctypes 在 Python 2.5 版本加入到标准库中。
通过它,你可以很方便地调用 C/C++ 动态库导出的函数,可以在 Python 中使用各种 C/C++ 的数据类型(比如指针)。
代码示例
# 调用 Linux/Unix 系统的标准 C 函数,获取当前时间
from ctypes import *
libc = CDLL('libc.so.6')
time = libc.time(None)
# 调用 Windows 系统 API,弹出消息提示框
from ctypes import c_int, WINFUNCTYPE, windll
from ctypes.wintypes import HWND, LPCSTR, UINT
prototype = WINFUNCTYPE(c_int, HWND, LPCSTR, LPCSTR, UINT)
paramflags = (1, 'hwnd', 0), (1, 'text', 'Hi'), (1, 'caption', None), (1, 'flags', 0)
MessageBox = prototype(('MessageBoxA', windll.user32), paramflags)
MessageBox(text='Hello world',flags=2)
这是一个很老牌的、有名气的工具,它可以把多种语言(Java、Python、C#、Ruby、PHP、Perl、Lua、Go、等)整合到 C/C++ 中。
这个工具可以让你用 Python 的语法写扩展模块的代码,然后它帮你把 Python 代码编译为本地动态库(机器码)。
用它编译出来的扩展模块,其性能跟 C/C++ 编写的扩展模块相当。
2.2 整合 JVM 平台
通过 Jython 可以让 Python 代码运行在 JVM 上,并且可以调用其它的 JVM 语言的代码(比如 Java Scale)
2.3 整合 dotNet 平台
通过 IronPython 可以让 Python 代码运行在 dotNET 平台上,并且可以调用其它的 dotNET 语言的代码(比如 C# F#)
2.4 整合 Objective-C 语言
这是用 Python 封装 Mac OS X 上的 Objective-C 库。
3 操作系统相关
os
这是一个非常基本的标准库,提供了常见的操作系统相关操作。
3.1 文件和目录操作
shutil
相对于 os 标准库,shutil 标准库提供了一些比较高级的文件和目录操作(目录递归复制、目录递归删除、目录压缩打包、等)
代码示例
# 递归删除某个目录
import shutil
shutil.rmtree(xxxx)
glob
这个标准库用于查找文件(支持通配符)
代码示例
# 获取当前目录所有 txt 文件
import glob
files = glob.glob('./*.txt')
fnmatch
这个标准库用于匹配文件名(支持通配符)
代码示例
# 列出当前目录所有 txt 文件
import os, fnmatch
for file in os.listdir('.') :
if fnmatch.fnmatch(file, '*.txt') :
print(file)
tempfile
使用这个标准库,可以安全地生成临时文件或临时目录。
3.2 本地进程间通信(IPC)
subprocess / multiprocessing
用于进程管理的标准库,可以启动子进程,通过标准输入输出跟子进程交互。
其中 multiprocessing 是 2.6 版本加入到标准库的。
signal
用于进程信号处理的标准库。
mmap
提供了内存映射文件的支持。
代码示例
# 利用 mmap 在父子进程间交换数据
import os
import mmap
map = mmap.mmap(-1, 13)
map.write("Hello world")
pid = os.fork()
if pid == 0: # 子进程
map.seek(0)
print map.readline()
map.close()
3.3 Windows 系统相关
这个第三方库封装了 Windows API 及 COM API。通过它可以方便地用 Python 进行 Windows 编程(调用 COM 组件、编写 Windows 服务、等)。
3.4 Linux / Unix 系统相关
syslog</