VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 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 更快的运行速度。


相关教程