Friday, October 1, 2010

一些有用的 python 库

在 python 的 ref 里面有不少有用的 python 库介绍,这里列几个:
  • string 字符串操作,包括判断类型,格式化,字符串模版。
  • re 正则表达式,用于创建 re 对象,进行正则表达式匹配、替换、拆分等行为。
  • struct 用于将 python 中某些对象转换成为 C 中 struct,但以 python 中的 string 表达这个二进制数据,常用于串行化数据。
  • difflib 实现了文件的比较,包括某些带有格式信息的(如 HTML)字符串、文件的比较方式。
  • textwrap 提供字符串输出的时候的换行功能。
  • codecs 是 python 的编码解码库,提供了常见编码方式(如 utf8 等)编码。
  • fpformat 提供了固定点(fixing point 相对于 floating point)的格式化函数。
  • datetime 提供了基本的日期、时间操作。calendar 提供了相关的日历操作。
  • collections 提供了除 python 默认的容器以外的一些高性能容器类,如 namedtuple、deque、Counter、OrderedDict;heapq 实现了利用堆实现的优先队列;
  • bisect 实现的是有序表的二分查找;
  • array 实现的是类似数组的功能,能够更高效的用于数值计算。
  • sched 基本的调度函数,可以在指定时间执行某些函数。但是它不是线程安全的。
  • queue 实现了一些基本的队列,如先进后出,优先队列等。
  • weakref 允许创建“弱引用”,一般说来 python 的 GC 不会清理带有引用的对象,但是如果使用 weakref 则允许存在某些对象被 GC 清理掉,这样创建的 weakref 将返回 None 共程序员决定是否重新加载该对象。
  • UserDict、UserList 和 UserString 提供了用户自己实现字典、列表和字符串的基本接口。
  • types 提供了运行时类型判定。
  • copy 提供了深度和浅层对象的复制。
  • pprint 提供了更好看的 print。
  • repr 提供了另一种 repr。
  • numbers 提供了常用数的类,如有理数、复数等。
  • math 和 cmath 提供了一些常用的数学函数,后者是复数使用的。decimal 是固定精度计算和浮点数计算的函数。
  • fraction 提供了有理数计算。
  • random 提供了随机数生成。
  • itertool 提供了一些生成 iterator 的工具。
  • functool 产生 functor 的工具。
  • operator 一些常用的运算符。
  • os.path 访问文件、目录的常用函数
  • fileinput 用于按照行读入文件内容;
  • stat 实现的是 libc 里面的 stat() 函数功能;
  • tempfile 产生临时文件和临时目录;
  • glob 产生文件名展开的结果;
  • fnmatch 产生文件名匹配;
  • linecache 允许随机访问文件的每行,但使用了 cache,这样访问效率较高;
  • shutil 是 shell 的常用工具,包括较高层的文件操作,如复制,重命名等;
  • pickle 可以用来串行化 python 对象;cPickle 实现的更快;copy(_)reg 用于注册 pickle;
  • shelve 是一个 persistent 且和字典类似的对象(通过 pickle),可以用于串行化 python 对象并使之 persistent。类似的接口存在于访问数据库的一些模块里面。
  • marshal 用于直接串行化 python 对象,它处理的不是 pickle 产生的串行化对象,而是依赖于当前 python 版本的二进制数据;
  • sqlite3 访问 sqlite3 数据库,嗯,这作为我第一个使用的 SQL 数据库玩玩吧;
  • 几个用于压缩的 zlib、gzip 和 bz2;
  • 几个特殊的文件格式 csv、ConfigParser(跟 ini 文件格式类似)和 plistlib(就是 mac 下面的那个 plist 文件);
  • 几个 hash 和数字签名的模块,如 hashlib、hmac、sha 和 md5;
  • 常用 os 相关命令,如目录操作等;输入输出使用 io 模块;
  • time 和 time.h 里面提供的函数类似;
  • argparse 用于解析命令行参数;
  • logging 用于产生日志;
  • getpass 用于获得登陆信息;
  • curses 用于 terminal 字符显示(和 ncurses 类似?)
  • platform 用于获得主机信息;
  • errno 和 ctypes 对应 C 的对应功能;
  • select 对应与 C 中 select() 函数;
  • threading 提供了比较高级的多线程工具,而 thread 相对较低级;
  • multiprocessing 多进程编程;
  • readline 将 readline 库的基本功能打包了;rlcompleter 用于 readline 的补全功能;
  • 子进程管理 subprocess,包括使用管道等;socket 包含了 socket 通信;signal 设置进程信号处理 handler;
  • email 包含了处理邮件的常用功能;json 允许我们处理 json 格式的数据;HTMLParser 允许我们处理 html 文件;
  • cgi 允许我们写 CGI 程序;httplib 允许我们使用 HTTP 客户端的基本功能;类似的还支持 ftp 等协议;
  • SimpleHTPServer 是一个简单的 http server 实现;
  • 音频视频处理 audioop 和 imageop;
  • 颜色转换 colorsys;
  • 多国文字支持 gettext 和 locale,与 C 程序类似;
  • cmd 支持建立命令行处理程序;
  • pydoc 是 python 的文档系统,地位和 perldoc 类似;
  • unittest 用于单元测试;test 用于 regression test;
嗯,我们下面将仔细学习其中某些有意思的库。
  • re
  • weakref
  • itertool
  • functool
  • operator
  • pickle
  • shelve
  • sqlite3
  • os
  • io
  • argparse
  • logging
  • threading
  • subprocess
  • json
  • pydoc
  • unittest
  • test

No comments:

Post a Comment