首页 > Python基础教程 >
-
python基础教程之Python 模块大全之最全(2)
SQLObject
SQLObject 支持的数据库有:MySQL、PostgreSQL、Sqlite、MS SQL Server、Firebird、Sybase SQL Server、SAP DB、等。
代码示例
# 通过对象的方式创建表 from sqlobject import * sqlhub.processConnection = connectionForURI('sqlite:/:memory:') class Person(SQLObject) : first_name = StringCol() last_name = StringCol() Person.createTable()
7 桌面 GUI 开发
7.1 GUI 框架 / 组件库
7.1.1 基于 Tk
Tk 是一个跨平台的界面组件库。
Tkinter / tkinter
这是 Python 内置的标准库,封装了 Tcl/Tk 界面库。
Python2 的模块名叫 Tkinter,到 Python3 模块名改为 tkinter
代码示例
# 用 Tkinter 写 Hello world from Tkinter import * if __name__ == '__main__' : root = Tk() label = Label(root, text='Hello world') label.pack() root.mainloop()
7.1.2 基于 wxWidgets
wxWidgets 是 C++ 开发的跨平台框架(不仅包括 GUI,还有其它功能)。
wxPython
在所有的 wxWidgets 的 Python 封装库中,这个是名气最大的。
Ulipad(知名的国产的 Python IDE)就是基于 wxPython 开发的。
代码示例
# 用 wxPython 写 Hello world import wx class Frame(wx.Frame) : pass class App(wx.App) : def OnInit(self) : self.frame = Frame(parent=None, title='Hello world') self.frame.Show() self.SetTopWindow(self.frame) return True if __name__ == '__main__' : app = App() app.MainLoop()
PythonCard
又一个基于 wxWidgets 的 GUI 库。
7.1.3 基于 GTK+
GTK+ 全称是(GIMP Toolkit),由 C 开发的跨平台界面组件库。
PyGTK
这是 Python 对 GTK 的封装。
代码示例
# 用 PyGTK 写 Hello world import pygtk pygtk.require('2.0') import gtk class HelloWorld : def __init__(self) : self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect('delete_event', self.delete_event) self.window.connect('destroy', self.destroy) self.window.set_border_width(10) self.button = gtk.Button('Hello world') self.button.connect('clicked', self.hello, None) self.button.connect_object('clicked', gtk.Widget.destroy, self.window) self.window.add(self.button) self.button.show() self.window.show() def main(self) : gtk.main() def hello(self, widget, data=None) : print 'Hello world' def delete_event(self, widget, event, data=None) : print 'delete event occurred' return False def destroy(self, widget, data=None) : gtk.main_quit() if __name__ == '__main__' : hello = HelloWorld() hello.main()
7.1.4 基于 Qt
Qt 是 C++ 开发的跨平台框架(不仅包括 GUI,还有其它功能)。
PyQt
这是 Python 对 Qt 的封装。
代码示例
# 用 pyQt 写 Hello world import sys from PyQt4.QtGui import * if __name__ == '__main__' : app = QApplication(sys.argv) window = QWidget() window.resize(320, 240) window.setWindowTitle('Hello world') window.show() sys.exit(app.exec_())
PySide
这也是 Python 对 Qt 的封装。
7.1.5 基于 FLTK
FLTK 全称是( Fast Light Tool Kit),由 C++ 开发的跨平台、轻量级界面组件库。
PyFLTK
这是 Python 对 FLTK 的封装。
7.1.6 基于 Windows 平台
PyWin32
PyWin32 前面提到过。它可以提供原生的 Windows GUI 界面。
IronPython
IronPython 前面提到过。它可以提供 dotNET 的 GUI 界面。
7.1.7 基于 JVM 平台
Jython
Jython 前面提到过。它可以提供基于 Java 的 Swing 界面。
7.1.8 其它
EasyGUI
EasyGUI 这是一个很轻量级的库。跟其它 GUI 不同之处在于——没有事件驱动。
PyGUI
PyGUI 是一个更高层的 GUI 库,底层分别封装了 PyWin32(Windows 平台)、PyGTK(Linux 平台)、PyObjC(Mac OS X 平台)。
Kivy
跨平台的多媒体框架和界面库,用来开发比较炫的界面。
除了支持桌面操作系统,还支持 Android / iOS,支持多点触摸。
OcempGUI
基于 PyGame 的一个跨平台 GUI 库。PyGame 下面会提到。
7.2 图表/报表
matplotlib
这是一个有名的图形库,主要用来绘制数学相关的图形。
跟后面提到的 SciPy 整合可以起到类似 MATLAB 的效果。效果图在“这里”。
Gnuplot.py
这是 Python 对 gnuplot 的封装。gnuplot 的效果图在“这里”。
PyQtGraph
这是一个纯 Python 的库,依赖于 PyQt4 / PySide。效果图在“这里”。
PyX
这个库可以跟 TeX / LaTeX 无缝整合,支持导出为 PostScript / PDF 格式。适合用来制作报表。效果图在“这里”。
Chaco
这是一个商业公司维护的库,主要提供2维图表。效果图在“这里”。
8 处理文件格式
8.1 处理压缩文件 / 打包文件
8.1.1 zip
zipfile
处理 zip 格式的标准库。
8.1.2 bzip2(bz2)
bz2
处理 bzip2 格式的标准库。
8.1.3 gzip(gz)
gzip
处理 gzip 格式的标准库。
zlib
处理 gzip 格式的标准库。
8.1.4 tar
tarfile
处理 tar 格式的标准库。
8.1.5 7zip(7z)
PyLZMA
处理 7zip 格式的第三方库。
8.1.6 rar
rarfile
处理 rar 格式的第三方库。
8.1.7 msi
msilib
处理 msi 格式的标准库,从 Python 2.5 版本开始提供。
8.2 处理标记语言
8.2.1 XML
xml.dom / xml.miniDom / xml.etree.ElementTree
用 DOM(Document Object Model)方式处理 XML 文件的标准库。
xml.sax / xml.parsers.expat
用 SAX(Simple API for XML)方式处理 XML 文件的标准库。
lxml
著名的 C 语言库 libxml 和 libxslt 的 Python 封装。
功能很强,支持 XPath 1.0、XSLT 1.0、扩展 EXSLT、等。还可以用来解析 HTML 格式。
8.2.2 HTML
HTMLParser
以回调方式解析 HTML/XHTML 文件内容的标准库。
8.3 处理图片
Python Imaging Library (PIL)
这是一个很有名气的 Python 图像处理库,支持常见图像文件格式(BMP、JPG、GIF、PNG、等),可以对图像进行各种常见操作(格式转换、旋转、缩放、剪切、等)。
代码示例
# 旋转某图片并显示 from PIL import Image im = Image.open('xxx.jpg') im = im.rotate(90) im.show()
8.4 处理 PDF
pyfpdf
这是 FPDF 的 Python 移植库,用来生成 PDF 文档。
支持的功能比较全(嵌入字体、嵌入图片),文档也比较详细。
代码示例
# 这是个简单 Hello World 示例 from fpdf import FPDF pdf = FPDF() pdf.add_page() pdf.set_font('Arial', 'B', 16) pdf.cell(40, 10, 'Hello World') pdf.output('test.pdf', 'F')
# 支持写入 HTML 语法。目前支持几种常见的 HTML tag from pyfpdf import FPDF, HTMLMixin class MyFPDF(FPDF, HTMLMixin) : pass pdf = MyFPDF() pdf.add_page() pdf.write_html(html) pdf.output('test.pdf', 'F')
pyPdf / PyPDF2
pyPdf 目前已经不继续升级维护了。PyPDF2 是 pyPdf 的 fork 并继续增加新功能。
除了可以提取文件属性,还可以切分/合并文档,加密/解密文档。
PDFMiner
可以提取 PDF 文件属性以及每页的文本,支持把内容输出为 HTML 格式。
8.5 处理 Office 文档
8.5.1 Word(doc、docx)
PyWin32
PyWin32 前面提到过。它可以基于 COM 操作 Office 文档,包括 Word(本地需要安装 Office)。
8.5.2 Excel(xls、xlsx)
pyExcelerator
该库可以支持 Office Excel(97/2000/XP/2003)以及 OpenOffice Calc 的文档。无需依赖外部软件。
PyWin32
PyWin32 前面提到过。它可以基于 COM 操作 Office 文档,包括 Excel(本地需要安装 Office)。
8.5.3 Power Point(ppt、pptx)
python-pptx
该库可以用来生成 pptx(Open XML PowerPoint)格式的文档。
PyWin32
PyWin32 前面提到过。它可以基于 COM 操作 Office 文档,包括 Excel(本地需要安装 Office)。
8.6 处理 CHM
PyCHM
这是基于 chmlib 的 Python 封装库。可以提取 CHM 文件的属性以及每个页面的内容。
8.7 处理 RTF
PyRTF
这个 Python 库可以用来处理 RTF(富文本格式)文档。
9 游戏开发
PyGame
跨平台的 Python 第三方库,用来辅助游戏开发的,名气非常大。
PyOpenGL
封装 OpenGL 的 Python 第三方库。
Python-Ogre
封装 OGRE(3D 渲染引擎)的 Python 第三方库。
10 数值计算 / 科学计算
NumPy
NumPy 提供了功能强大、性能很高的数值数组,可以用来进行各种数值计算(包括矩阵运算)。
代码示例
# 以下是传统 Python 写法,冗长且速度较慢 a = range(10000000) b = range(10000000) c = [] for i in range(len(a)) : c.append(a[i] + b[i]) # 以下是 NumPy 的写法,简洁且速度飞快 import numpy as np a = np.arange(10000000) b = np.arange(10000000) c = a + b
SciPy
SciPy 依赖 NumPy 提供的多维数组。相比 NumPy,SciPy 提供了更高层的数学运算模块(统计、线性代数、积分、常微分方程求解、傅立叶变换、信号处理、等),被广泛用于科研和工程领域。
11 其它
一些不方便归类的,暂时放到这里。
PyPy
这是一个用 Python 写的 Python 解释器(有点绕口令)。
PyPy 支持 JIT(Just-in-time compilation)和沙箱技术,可做到比 CPython 更快的运行速度。