第二部分
12.内置函数和异常
13.Python运行时服务
14.数学运算
15.数据结构、算法和代码简化
16.字符串和文本处理
17.Python数据库访问
18.文件和目录处理
19.操作系统服务
20.线程与并发性
21.网络编程和套接字
22.Internet应用程序编程
23.Web编程
24.Internet数据处理和编码
25.其它库模块
第十二章
内置函数:
abs()/all()/any()/ascii()/basestring/bin()/bool()/bytearray()/bytes()/chr()/classmethon()/cmp()/compile()/complex()/delattr()/dict/dir/divmod/enumerate/eval/exec/filter/float/format/frozenset/getattr/globals/hasattr/hash/help/hex/id/input/int/isinstance/issubclass/iter/len/ist/locals/long/map/max/min/next/object/oct/open/ord/pow/print/property/range/raw_input/repr/reversed/round/set/setattr/slice/sorted/staticmethod/str/sum/super/tuple/type/unichr/unicode/vars/xrange/zip.
异常实例:
e.args # 引发异常时提供的参数元组
e.message # 错误消息,只有Python2
e.__cause__ # 显示关联异常时的前一个异常,只python3
e.__context__ # 隐式的前一个异常,只有Py3
e.__traceback__ # 语义场关联的跟踪对象,只有Py3
第十三章
atexit # 程序退出时atexit注册需要执行的函数
copy # 创建符合对象的复制函数,copy()浅复制,deepcopy()深复制
gc # 垃圾回收,collect()收集,diable()禁用,enable()启动,garbage(),get_count(),get_debug(),get_objects(),get_referers(),get_threshold(),isenabled(),set_debug(),set_threshold().
如果对象使用了__del__方法,则不会进行垃圾回收,被放在gc的disable列表上。
inspect # 收集Python活动对象的信息,如属性、文档字符串等
cleandoc/currentframe/formatargspec/formatargvalues/getargspec/getargvalues/getclasstree/getcomments/getdoc/getfile/getframeinfo/getinnerframes/getmembers/getmodule/getmoduleinfo/getmodulename/getmro/getouterframe/getsourcefile/getsourcelines/getsource/stack/trace....
marshal # 对象序列化,只用于简单类型
sys # 解释器和环境变量
变量:
api_version # 解释器的C语言API版本
argv # 命令列表,ragv[0]是程序名
builtin_module_names # 模块名的元组
byteorder # 本机的字节排序方式
copyright # 版权信息
__displayhook__ # displayhook()的初始值
dont_write_bytecode # 导入模块时是否写字节码的标志
dllhandle # Python DLL 的(Windows)整数句柄
__excepthook__ # excepthook()的初始值
exec_prefix # 安装平台相关的Python文件目录
executable # 解释器可执行文件名的字符串
flags # OPython解释器的不同命令行设置的对象,只读
float_info # 浮点数内部表示信息对象
hexversion # 对sys.version_info 解码后的十六进制整数
last_type,last_value,last_traceback
maxint # 只支持Py2
maxsize,maxunicode
modules # 将模块名与对象进行匹配的字典
path # 模块搜索路径的字符串列表,第一项一般设置为Py脚本所在目录
platform # 平台标志字符串,如linux-i386,win32
prefix # 平台无关的Python文件目录
ps1,ps2 # 解释器主要和次要提示符文本的字符串
py3kwarning,stdin,stdout,stderr
__stdin__,__stdout__,__stderr__ # 默认值
tracebacklimit # 发生异常时,回溯的最大级数
version # Python版本信息字符串
version_info # 表示为元组的版本信息
winver # 用于在Windows上建立注册表键的版本号
函数:(忽略部分不常用的)
__clear_type_cashe() # 清除内部类型缓存,1024
displayhook(),excepthook()
exc_clear() # 清除有关最后一次发生的异常
exit() # 通过SystemExit异常退出Python
getcheckinterval() # 返回检查间隔值,用于检查信号、线程开关等其他定期事件
getdefaultencoding() # 默认的编码字符串
getdlopenflags() # Unix上加载扩展模块相关
getfilesystemencidong() # 返回的字符编码用于将unicode文件名映射到底层操作系统使用的文件名。
getprofile()/setprofile() # 配置函数
getecursionlimit() # 函数的递归限制
getrefcount() #object的引用计数
getwindowsversion() 返回一个元组,用于判断系统版本很有用
traceback模块:发生异常后,收集并打印程序的栈跟踪信息
types模块:定义了与函数、模块、生成器等内置类型名称。
warning模块:不会发生异常,但是是潜在问题,以后版本可能不支持的特性
weakref模块:弱引用支持。通常的引用会导致引用计数增加,为避免可使用弱引用。
第十四章
decimal # IBM通用十进制算法标准,精准控制运算
fractions # 有理数Fraction类
math # 标准运算函数,用于整数和浮点数,不用于复数(cmath),返回值都为浮点数,三角函数度数为弧度
numbers # 抽象的基类,用于管理各种数值
random # 随机数生成函数,seed()初始化,默认使用系统时间,randint()/randrange(),sample()/shuffle()/choice(),random()
第十五章
abc模块:定义一个元类和一对装饰器,用于定义新的抽象基类。ABCMeta
abstractmethod/abstractproperty
array模块:数组创建时确定的单一类型。
array.array('i',[1,2,3,4,5]) # 访问时一般配合enumerate使用
bisect模块:支持使列表保持已排好的顺序,使用二分算法工作。
collections模块:deque 双端队列
命名元组
抽象基类
contextlib
functools
heapq
itertools
operator
第十六章
odecs模块用于处理Unicode文本IO的字符编码
lookup/open/EncodeFile/iterencode/iterdecode
re模块用于正则匹配和替换
compile() # 字符串编译为正则对象
escape() # 非字母数字字符都带有反斜杠
findall()/finditer()
match / search # 查找第一个匹配值
split/sub/subn
e.g.
import re
text = "Guido will be out of the office from 12/15/2012 - 1/3/2015."
#匹配日期
datepat = re.compile(r"(\d+)/(\d+)/(\d+)")
for m in datepat.finditer(text):
print m.group() # 12/15/2012 1/3/2015
# 找到日期,然后以不同的格式打印
monthnames = [None,"Jan",'Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
for m in datepat.finditer(text):
print "%s %s, %s"%(monthnames[int(m.group(1))],m.group(2),m.group(3))
string模块:字符串格式化等操作的类。Formatter,Template. capwords/maketrans
struct模块:Python与二进制数据结构的转换
pack/pack_into
unpack/unpack_from
calcsize
unicodedata模块提供访问Unicode字符数据库的方法。
第十七章
API规范:管理数据库连接的Connection对象和执行查询的Cursor对象
c = connection(dsn='hostname:DBNAME',usr='uname',password='pwd')
c.close() # 关闭连接
c.commit() # 将未完成的事务提交到数据库
c.rollback() # 将数据库回滚到事务的开始状态
cur = c.cursor() # 创建一个使用连接的新的cursor对象
cur.callproc(procname[,parame]) # 调用 procname存储过程,输出可使用fetch抓取
cur.close() # 关闭指针
cur.execute(query[,parame]) # 在数据库上执行查询或者query命令
cur.executemany(query[,paramequence]) # 重复执行查询或命令
cur.fetchone() # 返回execute或executemany的下一行结果集,列表或元组
cur.fetchmany([size]) # 返回行结果序列
cur.fetchall()
cur.nextset() # 放弃当前结果集中数据,跳到下一结果集
cur.setinputsize/cur.setoutputsize # 设定输入输出缓冲区容量,加速execute
cur.arraysize # 为fetchmany操作提供的默认整数值,不一而足
cur.description # 当前结果集中每一列的信息的一个元组序列
cur.rowcount # execute生成的最后结果中的行数
sqlite3内置数据库:
import sqlite3
conn = sqlite3.connect("dbfile")
cur = conn.cursor()
# 简单查询示例
cur.execute("select * from tabdata")
# 循环结果
while True:
row = cur.fetchone()
if not row: break
name,shares,price = row
pass
# 迭代的方法
cur.execute("xxxx")
for name,shares,price in cur:
pass
查询语句生成:
不建议使用string%(a,b) 这种格式化的办法,会导致SQL注入。
cur.execute("select * from taba where name=? and price=?",(a,b)) # 建议这种的
第十八章
bz2模块读取和写入bzip2压缩算法的压缩文件。
filecmp模块用于比较文件和目录。
fnmatch模块用于使用unix shell进行文件名匹配。
glob模块返回一个目录中的全部文件名,使用unix shell匹配规则。
gzip模块读取和写入与GNU gzip兼容的文件。
shutil模块高级文件操作,仅限于普通的文件。
tarfile模块处理tar文件
tempfile模块用于生成临时性文件和文件夹
zipfile模块操作主流zip格式编码的文件。
zlib模块通过对zlib库的访问支持数据压缩
第十九章
Python大多数系统模块以POSIX接口为基础。
Commands模块:以字符串形式指定简单系统命令,并将输出以字符串形式返回,仅在Unix系统有效。仅支持Python2,Python3在subprocess中处理。
ConfigParser模块:用于读取Windows INI风格的.ini配置文件。SafeConfigParser/RawConfigParser
datetime模块:处理和表示日期和时间的类。date处理日期,time处理时间。dt = datetime.datetime.now(); d = dt.date();t=dt.time();timedelta对象表示两个日期或时间的差值。tzinfo对象处理时区信息。
errno模块:为操作系统调用返回的整数错误代码定义了名称。os.strerror()
fcntl模块:对Unix文件描述符和IO控制。
io模块:实现了各种形式的IO类,无缝地处理各种基本IO。IObase,BufferedIOBase,TextIOBase
logging模块:日志类。使用前首先配置。basicConfig()
1、使用getLogger()函数创建各种logger对象,正确设置级别参数。
2、通过实例化类处理器(FileHandler/StreamHandler/SocketHandler)创建Handler对象,设置级别。
3、创建Formatter对象,使用SetFormatter()方法吧他们附加给Handler对象。
4、使用AddHandler()方法将Handler对象附加给Logger对象。
mmap模块为内存映射的文件对象提供支持,内存映射文件的内容是可变的。
msvcrt模块提供对Microsoft Visual C运行时钟大量有用的函数的访问,只能在Windows系统使用。
optparse模块为处理sys.argv中提供的Unix风格命令行选项提供高级支持。
os模块提供到常用操作系统服务的可移植接口。
1、进程环境:
chdir()/chroot()/ctermid()/getcwd()/getwdu()/getgid()/getuid()/getgroups()/getlogin()/getpgid(gid)/getpgrp()/getpid()/getenv()/strerror()/umask()/unsetenv()
2、文件创建与文件描述符
close(fd);closerange(low,high);dup(fd);dup2();fdopen(fd...);fstat(fd);fsync(fd);lseek();pipe();read();write();
3、文件与目录
access();chmod();listdir();major();minor();makedirs();mkdir();remove();rename();renames();rmdir();stat();statvfs();symlink();unlink();utime();walk();
4、进程管理
abort();defpath();execl/execle/execlp/execv/execvp/execvp();_exit();popen();spawnv/spawnve/spawnle/spawnlp/spawnvp();startfile();system(cmd);times();waitpid();wait3();wait4();
5、系统配置(Unix)
6、异常error
os.path模块:
abspath(path); # 路径名称path的绝对路径
basename(path); # 基本路径,文件夹名称
commonprefix(list); # list中所有字符串前缀中最常的字符串
dirname(); # 不包含自身的文件目录
exists(); # 是否存在
expanduser();expandvars();
getatime(); # 最后一次访问path的时间
getctime(); #创建或者修改path的时间
getsize(); path的大小,字节为单位
isabs(); # 是绝对路径?
isfile(); # 是普通文件?
isdir(); # 是目录?
islink()? # 是符号链接?
ismount(); # 是挂载点?
join(); lexists();
normcase(); # 大小写格式化,反斜杠统一
normpath(); # 路径关系统一
realpath(); # 返回真实路径
signal模块:settimer,signal...
subprocess模块:简化创建新进程的任务、控制输入与输出流及处理返回代码。
Popen,call,check_call,
time模块
winreg模块:到windows注册表的底层接口。
import _winreg as winreg
hkey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,ur"SOFTWARE\Python\PythonCore\2.7\PythonPath")
print winreg.QueryValue(hkey,None)
winreg.CloseKey(hkey)
第二十章
multiprocessing模块:子进程中运行任务、通信和共享数据,同步支持。
p = multiprocessing.Process(target=clock,args=(1,))
p.start()
进程间通讯:(管道和队列)
Queue(); # 共享的进程队列
JoinableQueue(); # 创建可连接的共享进程队列
Pipe(); # 管道
def constor(pipe):
(out_p,in_p) = pipe
in_p.close()
while True:
try:
item = out_p.recv()
except Exception, e:
break
print item
print "constor done"
if __name__ == "__main__":
(out_p,in_p) = multiprocessing.Pipe()
cons_p = multiprocessing.Process(target=constor,args=((out_p,in_p),))
cons_p.start()
out_p.close()
sequence = range(1,100)
for item in sequence:
in_p.send(item)
in_p.close()
cons_p.join()
进程池:Pool(); # 创建工作进程池
共享数据与同步:
Value(); # 在共享内存中创建ctypes对象,可锁。RawValue();#不加锁。Array(); # 共享内存创建数组,同Value()。RawArray(); # 同RawValue();
托管对象:进程不支持共享对象,共享内存对于高级对象不支持。multiprocessing模块通过叫做管理器的一个单独的子进程进行共享对象。其他进程通过使用代理访问共享对象。
Manager(); # 在单独进程中运行的管理器。multiprocessing.managers
连接:multiprocessing.connection 可向同一台或者远程系统上的其他进程发送消息。
Client(); # 客户端,连接到另一个进程
Listener(); # 服务器
工具函数:
active_children(); # 活动子进程Process对象
cpu_count(); # CPU数量
current_process(); # 当前进程的Process对象
freeze_support(); # 用于打包程序中
get_logger(); # 返回与多进程处理模块相关的日志记录对象,不存在则创建
set_executeable(); # 执行子进程的Python可执行程序的名称,只用于Windows.
threading模块:
Thread对象:Thread(); # 创建一个新的Thread实例,start,daemon
Timer对象: Timer(); start,cancel
Lock对象:lock(); # 创建锁,未锁定。acquire();# 获取锁定。release();# 释放锁定
RLock对象:重入锁,同一线程可以多次获取它。
信号量与有边界的信号量。Semaphore
Event事件。
Condition条件变量。
实用工具函数:
active_count();current_thread();enumerate();local();setprofile();settrace();stack_size();
第二十一章
asynchat模块:简化asyncore模块实现异步网络的应用程序实现过程。
asyncore模块:网络活动作为一系列事件循环进行分派的异步处理。
select模块:访问select()和poll()系统调用。
socket模块:访问标准的BSD套接字接口。
create_connection/getaddrinfo/gethostbyname/gethostname/inet_ntoa/inet_ntop/ntohl/setdefaulttimeout/socket
ssl模块:包装套接字对象与SSL,为SSL提供数据加密和对等验证功能。OpenSSL。
SocketServer模块:
BaseRequestHandler,StreamRequestHandler,
TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer
第二十二章
ftplib模块:FTP协议的客户端,一般不直接使用,因为urllib提供了一个高级接口。
http包:包含了编写http客户端和服务器以及对状态管理的支持(cookie)
http.client(httplib py2)
HTTPConnection(host[,port]); # 创建HTTP连接,默认端口80
HTTPSConnection(...); # 使用安全套接字,默认端口443
connection/close/send/putrequest/putheader/endheaders/getresponse
返回的HTTPResponse实例read/getheader/getheaders/length/version/status
http.server(BaseHTTPServer,CGIHTTPServer,SimpleHTTPServer)
http.cookies(cookie) 在服务器端提供对HTTPcookie的处理
http.cookiejar为存储和管理cookie提供客户端支持
smtplib模块:提供低级SMTP客户端接口
urllib包:HTTP服务器,FTP服务器,本地文件交互。
Py2中分别在urllib,urllib2,urlparse,robotparser.Py3中都集合在urllib中。
urllib.request(urllib2)
urlopen(url[,data[,timeout]]); # data是url编码的字符串,包含要上传到服务器的表单数据,有此参数时使用的是Post操作。默认为GET
request(url[,data[,headers[,origin_reg_host[,unverifiable]]]]); # headers是字典,包含可表示http报头内容的键值对,origin_reg_host是发起请求的主机名称。unverifiable默认False,如果是无法验证的URL则为True。
r.add_data(data);r.add_header(key,val);r.add_unredirected_header(key,val);r.get_data();r.get_full_url();r.get_host();r.get_method();r.get_origin_req_host();r.get_selector();r.get_type();r.get_data();r.is_unverifiable();r.has_header(header);r.set_proxy(host,type);
e.g.
import urllib2
headers = {
'User-Agent':"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)"
}
r = urllib2.Request("http://www.baidu.com/",headers=headers)
u = urllib2.urlopen(r)
print u.read()
Opener:urlopen不支持验证,cookie或者其他http功能,想要使用必须使用build_opener()创建自己的opener对象。
build_opener([handler1[,handler2....]]); # handler都是特殊处理程序对象的实例。CacheFTPHandler(持久FTP连接),FileHandler(打开本地文件),FTPHandler(通过FTP打开url);HTTPBasicAuthHandler(基本HTTP验证处理);HTTPCookieProcessor(HTTPcookie处理);HTTPDefaultErrorHandler(HTTPError异常);HTTPDigestAuthHandler(HTTP摘要验证);HTTPHandler(HTTP打开url);HTTPRedirectHandler(处理HTTP重定向);HTTPSHandler(安全HTTP打开URl);ProxyHandler(代理重定向);ProxyBasicAuthHandler(基本代理验证);ProxyDigestAuthHandler(摘要代理验证);UnknownHandler(处理所有未知Url处理程序).
install_opener(opener); # 安装不同的opener对象作为urlopen使用的全局url opener,opener通常使用build_opener()创建的opener对象。
e.g. #通过代理访问
proxy = ProxyHandler({'http':'http://someproxy.com:8080'})
auth = HTTPBasicAuthHandler()
auth.add_password('realm','host','username','password')
opener = build_opener(proxy,auth)
u = opener.open("http://www.baidu.com")
urllib.parse(urlparse)
urlparse(urlstring[,default_scheme[,allow_fragments]]); # default_scheme指定要解析的方案(http/ftp...),allow_fragments若为0则不支持片段标识符。返回的ParseResult实例r=(scheme,netloc,path,parameters,query,fragement)
urljoin(base,url); # 组合base url 构造绝对url
parse_qs(qs[,keep_blank_values[,strict_parsing]]); # 解析URL编码的查询字符串(r.query),返回一个字典
parse_qsl(); # 同parse_qs返回一个(name,val)列表
url编码(Py2 urllib)
quote(string[,safe[,encoding[,errors]]]); # 编码,最后2个参数只在Py3中使用。
unquote(); # 解码
urlencode(query[,doseq]); # 将列表query中的查询值转换为url编码的字符串,可以作为query参数直接提交
urllib.error # urllib异常
urllib.robotparser(robotparser) # 用来解析web爬虫中的robot.txt文件的内容
xmlrpc包:实现了XML-RPC服务器和客户端的模块。
第二十三章
cgi模块:用于实现cgi脚本,也就是用来处理来自表单的用户输入或者生成某种动态内容时被调用。
cgib模块:提供另一个可选择的异常处理程序,在发生未捕获的异常时显示详细的报告。
wsgiref包:WSGI->Python Web服务器网关接口,web服务器和程序之间的标准化接口。
webbrowser模块:在web浏览器中以平台无关的方式打开文档。
e.g.
import webbrowser
wb = webbrowser.get('windows-default')
print wb.name,wb.basename,wb.args
wb.open("www.baidu.com")
第二十四章
base64模块:base64,base32,base16
base64编码将编码的数据分为一个或者多个24位(3个字节),然后每个24位被分为4个6位组件。0-25:A-Z,26-51:a-z,52-61:0-9,62:+,63:/,填充:=.
base32编码将数据分为一个或多个40位(5字节)组,每个40位又分为8个5位组件。0-25:A-Z,26-31:2-7,填充:=。
base16编码:0-9和A-F表示每个4位组。
b64encode/b64decode,standard_b64encode/standard_b64decode,urlsafe_b64encode/urlsafe_b64decode.
binascii模块:二进制和ASCII编码转换
a2b_uu/b2a_uu,base64,hex,rledecode_hqx/rlecode_hqx,crc_hqx,crc32.
csv模块:读取和写入逗号分隔值(CSV)组成的文件。reader/writer
email包:message_from_file(f); message_form_string(str);
hashlib模块:散列和消息摘要算法,MD5、SHA1.
md5(); # md5散列(128位)
sha1();#160 sha224(); sha256(); sha384(); sha512();
hmac模块:HMAC(加密散列消息确认)提供支持。
HTMLParser模块(html.parser):解析HTML和XHTML文档的类
json模块:使用JSON序列化和反序列化对象
mimetypes模块:根据文件名猜测与文件关联的MIME类型
quopri模块:对字节字符串执行Quoted Printable传输编码和解码。
xml包:支持SAX和DOM,内部集成ElementTree。
xml.dom.minidom模块:解析XML根据dom约定在内存中以树结构存储文档。parse/parseString
e.g.
from xml.dom import minidom
doc = minidom.parse("demo.xml")
ingredients = doc.getElementBytagName("ingredients")[0]
items = ingredients.getElementBytagName("item")
for item in items:
num = item.getAttribute("num")
units = item.getAttribute("units")
text = item.firstChild.data.strip()
quantity = "%s %s"%(num,units)
print("%-10s 5s"%(quantity,text))
xml.etree.ElementTree模块:将对象与XML结合使用
e.g.
from xml.etree.ElementTree import ElementTree
doc = ElementTree(file="demo.xml")
for items in doc.findall(".//item"):
num = item.getAttribute("num")
units = item.getAttribute("units")
text = item.firstChild.data.strip()
quantity = "%s %s"%(num,units)
print("%-10s 5s"%(quantity,text))
e.g. # 使用迭代器完成
from xml.etree.ElementTree import iterparse
iparse = iterparse("music.xml",['start','end'])
# 查找顶层元素
for event,elem in iparse:
if event == 'start' and elem.tag == 'music':
musicNode = elem
break
# 所有专辑
albums = (elem for event,elem in iparse
if event == 'end' and elem.tag == 'album' )
for album in albums:
# 处理
musicNode.remove(album) # 完成后删除
第二十五章
Python服务
bdb # 访问调试程序框架
code # 解释程序基类
codeop # 编译Python代码
compileall # 对目录内的Python文件进行字节编译
copy_reg() # 注册用于pickle模块的内置类似
dis # 反汇编程序
distutils # 分发Python模块
fpectl # 浮点异常控制
imp # 访问import语句的实现
keyword # 测试字符串是否是Python关键字
linecache # 从源文件进行检索行
modulefinder # 查找脚本使用的模块
parser # 访问Python源代码使用的解析树
pickletools # pickle开发人员工具
pkgutil # 包扩展实用工具
pprint # 对象的Prettyprinter
pyclbr # 从类浏览器提取信息
py_compile # 将Python源代码编译为字节代码文件
repr(reprlib) # 可替代repr()函数的实现
symbol # 用来表示解析树内部节点的常量
tabnanny # 检测不够明确的缩进
test # 回归测试包
token # 解析树结构的终点
tokennize Python源代码的扫描程序
user # 用户配置文件解析
zipimport 从Zip解压文件导入模块
。。。。
第三部分
C和Python互相调用