﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-KiMoGiGi 技术文集-随笔分类-Python</title><link>http://www.cnitblog.com/seeyeah/category/8086.html</link><description>不在乎选择什么，而在乎坚持多久……</description><language>zh-cn</language><lastBuildDate>Fri, 30 Sep 2011 15:04:49 GMT</lastBuildDate><pubDate>Fri, 30 Sep 2011 15:04:49 GMT</pubDate><ttl>60</ttl><item><title>【原】Python Note 1</title><link>http://www.cnitblog.com/seeyeah/archive/2009/03/19/55531.html</link><dc:creator>KiMoGiGi</dc:creator><author>KiMoGiGi</author><pubDate>Wed, 18 Mar 2009 16:54:00 GMT</pubDate><guid>http://www.cnitblog.com/seeyeah/archive/2009/03/19/55531.html</guid><wfw:comment>http://www.cnitblog.com/seeyeah/comments/55531.html</wfw:comment><comments>http://www.cnitblog.com/seeyeah/archive/2009/03/19/55531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/seeyeah/comments/commentRss/55531.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seeyeah/services/trackbacks/55531.html</trackback:ping><description><![CDATA[<strong style="FONT-SIZE: 24pt">初步使用wx.aui.AuiManager构建界面</strong><br><br>在wxPython示例中，充分体验出AuiManager构建Layout的优势, 加以利用可以完全构建出类似visual studio的界面。<br><br><img height=621 alt="" src="http://www.cnitblog.com/images/cnitblog_com/seeyeah/pynote1/pyNote1.jpg" width=757 border=0><br><br>示例的布局太复杂&#8230;&#8230;第一次使用，尝试构建一个简单一点的界面练习，如下图<br><br><img height=600 alt="" src="http://www.cnitblog.com/images/cnitblog_com/seeyeah/pynote1/pyNote2.jpg" width=816 border=0><br><br>只有2个部分，左侧和中间内容。实现代码：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;coding=utf-8</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;wx<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;wx.aui;<br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MainUIHelper(object):<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,&nbsp;frame):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Frame&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;frame;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.Helper&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;self;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;CreateAuiManager(self,&nbsp;configs):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(len(configs)&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;0):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">制造Layout</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.AuiManager&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wx.aui.AuiManager();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.AuiManager.SetManagedWindow(self.Frame);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;c&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;configs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.AuiManager.AddPane(c.Control,&nbsp;c.PaneInfo);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.AuiManager.Update();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;AuiConfigModel(object):<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,&nbsp;control,&nbsp;paneInfo):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Control&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;control;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.PaneInfo&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;paneInfo;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;</span></div>
<br>MainUIHelper是一个界面的辅助类，主要有几句：<br>1、
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">self.AuiManager.SetManagedWindow(self.Frame);</span></div>
告诉主界面，现在由AuiManager进行布局。<br>2、<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">self.AuiManager.AddPane(c.Control,&nbsp;c.PaneInfo);</span></div>
为布局添加模块，第一个参数为模块容器中的控件，第二个参数是模块容器的属性。<br>3、<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">self.AuiManager.Update();</span></div>
将所有的布局设置提交，类似数据库事务的Commit。<br><br>在主界面调用代码，如下图所示（只有部分）：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;coding=utf-8</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;wx<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;wx.aui;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;wx.grid;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;mainUIHelper;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;start;<br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;os;<br><br></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MainUIFrame(wx.Frame):<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.Frame.</span><span style="COLOR: #800080">__init__</span><span style="COLOR: #000000">(self,&nbsp;None,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">SqlQuery</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,pos</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.DefaultPosition,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">500</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">400</span><span style="COLOR: #000000">),&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wx.DEFAULT_FRAME_STYLE&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">wx.SUNKEN_BORDER&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">wx.CLIP_CHILDREN&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">初始化</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainUIHelper.MainUIHelper(self);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">绘画布局</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.Helper.CreateAuiManager([<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainUIHelper.AuiConfigModel(self.CreateLeft(),&nbsp;wx.aui.AuiPaneInfo()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Name(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">left</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).Caption(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Script&nbsp;Folder</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).Left()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CloseButton(False)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.MaximizeButton(True)),&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainUIHelper.AuiConfigModel(self.CreateGrid(),&nbsp;wx.aui.AuiPaneInfo()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Name(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">gridContent</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).CenterPane())]);</span></div>
<br>其中self.CreateLeft()和self.CreateGrid()只是返回一些控件，注意的是后面的AuiPaneInfo对象。<br><br>设置它属性的方式如jquery的&#8220;链式代码&#8221;，如<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">wx.aui.AuiPaneInfo()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Name(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">left</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).Caption(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Script&nbsp;Folder</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">).Left()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CloseButton(False)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.MaximizeButton(True)</span></div>
意思是<br>1、命名模块为"left"<br>2、标题为Script Folder<br>3、靠在布局的左边<br>4、不需要关闭模块按钮<br>5、显示最大化按钮<br><br>AuiPaneInfo还有很多属性可以设置，详细查看API。<br><br><br><strong style="FONT-SIZE: 24pt">遍历文件夹</strong><br><br>用Python实现遍历一个文件夹里面的内容，为了方便演示，把文件夹的内容构建一个树控件输出。<br><br>Python有一个os.walk(path)的函数，方便遍历文件夹内的内容。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;root,&nbsp;dirs,&nbsp;files&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;os.walk(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">Script</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;root;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;dirs;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;files;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">---------</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">;</span></div>
<br>walk循环返回的是维度为3的数组，分别为<br>root - 当前循环的文件夹<br>dirs&nbsp; - 文件夹中有多少子文件夹<br>files&nbsp; - 文件夹中有多少文件<br><br>walk会自动递归搜索出所有文件和文件夹信息，因此一般情况用这个函数就可以非常省事。<br><br>也由于walk太智能的关系，用walk没有办法按我们的意愿，有顺序的输出文件信息，因此无法构建出想要的树控件。<br><br>因此摈弃了walk函数，用一个递归文件夹的函数。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;listFile(path,&nbsp;action,&nbsp;level</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(path):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(path,&nbsp;True,&nbsp;level);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;subPath&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;os.listdir(path):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;os.path.join(path,&nbsp;subPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(fullPath):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listFile(fullPath,&nbsp;action,&nbsp;level&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(fullPath,&nbsp;False,&nbsp;level);</span></div>
<br>其中action是处理路径的方式，action有3个参数，第一个参数为路径；第二个参数为bool，True代表此路径为文件夹，False代表路径为文件；第三个参数是当前路径的相对层，设置根目录的层为0。<br><br>我们可以这样调用代码，输出文件夹文件。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;listFile(path,&nbsp;action,&nbsp;level</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(path):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(path,&nbsp;True,&nbsp;level);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;subPath&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;os.listdir(path):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;os.path.join(path,&nbsp;subPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(fullPath):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listFile(fullPath,&nbsp;action,&nbsp;level&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(fullPath,&nbsp;False,&nbsp;level);<br><br><br></span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;showPath(path,&nbsp;isdir,&nbsp;level):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;isdir:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;level&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">[D]:</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,path;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;level&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">&nbsp;&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">&nbsp;,&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">[F]:</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;os.path.basename(path);<br><br><br>listFile(</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">Script</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;showPath);</span></div>
<br>输出的每个文件夹具有层次效果：<br><img height=411 alt="" src="http://www.cnitblog.com/images/cnitblog_com/seeyeah/pynote1/pyNote3.jpg" width=1002 border=0><br><br>同理，我们可以构造创建树控件的action函数。<br><br>我们紧接着第一个AuiManager的示例，在左边的Module创建添加这样的树控件，因此我们下面实现CreateLeft函数：<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;CreateLeft(self):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">""</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">遍历文件夹</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultScriptFolder&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;os.path.join(start.GetExecutePath(),</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">script</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">not</span><span style="COLOR: #000000">&nbsp;os.path.exists(defaultScriptFolder):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.mkdir(defaultScriptFolder);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.scriptTree&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;wx.TreeCtrl(self,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;(0,0),&nbsp;wx.DefaultSize,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wx.TR_DEFAULT_STYLE&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;currentRoot&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;self.scriptTree.AddRoot(os.path.basename(defaultScriptFolder));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">Key&nbsp;:&nbsp;path&nbsp;of&nbsp;folder</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">Node:&nbsp;TreeNode</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheNode&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{&nbsp;defaultScriptFolder:&nbsp;currentRoot&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;CreateNode(path,&nbsp;isdir,&nbsp;level):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;path&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;defaultScriptFolder:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentDirName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;os.path.dirname(path);<br></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;parentDirName</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempNode&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;self.scriptTree.AppendItem(cacheNode[parentDirName],&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.path.basename(path));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;isdir:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheNode.setdefault(path,&nbsp;tempNode);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">pass</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ListFile(defaultScriptFolder,&nbsp;CreateNode);<br><br></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;k,y&nbsp;in&nbsp;cacheNode.items():</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"%s:&nbsp;%s"%(k,y)</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">释放</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheNode.clear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;self.scriptTree;&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">def</span><span style="COLOR: #000000">&nbsp;ListFile(self,&nbsp;path,&nbsp;action,&nbsp;level</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(path):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(path,&nbsp;True,&nbsp;level);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;subPath&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;os.listdir(path):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;os.path.join(path,&nbsp;subPath);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;os.path.isdir(fullPath):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ListFile(fullPath,&nbsp;action,&nbsp;level&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action(fullPath,&nbsp;False,&nbsp;level);</span></div>
<br>创建了一个内部的函数，CreateNode，当作action参数传入ListFile递归调用。<br><br>效果如下图所示：<br><br><img height=535 alt="" src="http://www.cnitblog.com/images/cnitblog_com/seeyeah/pynote1/pyNote4.jpg" width=500 border=0><br><br><br>全部代码：<a href="http://www.cnitblog.com/Files/seeyeah/SqlQuery.zip">/Files/seeyeah/SqlQuery.zip</a><br>（注：Script文件夹的文件需要自己放置，任意放一些就可以显示效果。） 
<img src ="http://www.cnitblog.com/seeyeah/aggbug/55531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seeyeah/" target="_blank">KiMoGiGi</a> 2009-03-19 00:54 <a href="http://www.cnitblog.com/seeyeah/archive/2009/03/19/55531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python 在线中文书</title><link>http://www.cnitblog.com/seeyeah/archive/2009/03/16/55472.html</link><dc:creator>KiMoGiGi</dc:creator><author>KiMoGiGi</author><pubDate>Mon, 16 Mar 2009 12:52:00 GMT</pubDate><guid>http://www.cnitblog.com/seeyeah/archive/2009/03/16/55472.html</guid><wfw:comment>http://www.cnitblog.com/seeyeah/comments/55472.html</wfw:comment><comments>http://www.cnitblog.com/seeyeah/archive/2009/03/16/55472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/seeyeah/comments/commentRss/55472.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seeyeah/services/trackbacks/55472.html</trackback:ping><description><![CDATA[1、《wxPython in Action》<br><br><img height=251 alt="" src="http://wiki.woodpecker.org.cn/moin/WxPythonInAction?action=AttachFile&amp;do=get&amp;target=cover.jpg" width=200 border=0><br><br><a href="http://wiki.woodpecker.org.cn/moin/WxPythonInAction">http://wiki.woodpecker.org.cn/moin/WxPythonInAction</a><br><br>2、《Django Step by Step》<br><br><a href="http://www.woodpecker.org.cn/obp/django/django-stepbystep/newtest/doc/">http://www.woodpecker.org.cn/obp/django/django-stepbystep/newtest/doc/</a><br><br>3、《The Django Book》<br><br><a href="http://djangobook.py3k.cn/">http://djangobook.py3k.cn/<br></a><br>
<hr>
<br>PS：觉得这些开源社区的人，真的很无私，很伟大！
<img src ="http://www.cnitblog.com/seeyeah/aggbug/55472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seeyeah/" target="_blank">KiMoGiGi</a> 2009-03-16 20:52 <a href="http://www.cnitblog.com/seeyeah/archive/2009/03/16/55472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python源码中中文注释的处理</title><link>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55441.html</link><dc:creator>KiMoGiGi</dc:creator><author>KiMoGiGi</author><pubDate>Sun, 15 Mar 2009 06:12:00 GMT</pubDate><guid>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55441.html</guid><wfw:comment>http://www.cnitblog.com/seeyeah/comments/55441.html</wfw:comment><comments>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/seeyeah/comments/commentRss/55441.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seeyeah/services/trackbacks/55441.html</trackback:ping><description><![CDATA[摘至：<a href="http://hi.baidu.com/tiger%5Ftnt/blog/item/e004e44e0ecaf20fb3de058d.html">http://hi.baidu.com/tiger%5Ftnt/blog/item/e004e44e0ecaf20fb3de058d.html</a><br><br>在python源码中如果使用了中文注释运行时会有错误，解决的办法是在源码的开头部分加入字符编码的声明，下面是一个例子<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/python</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;coding=gbk</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">Hello&nbsp;World</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">&nbsp;＃这里可以是中文注释&nbsp;</span></div>
<img src ="http://www.cnitblog.com/seeyeah/aggbug/55441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seeyeah/" target="_blank">KiMoGiGi</a> 2009-03-15 14:12 <a href="http://www.cnitblog.com/seeyeah/archive/2009/03/15/55441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python import模块方法 </title><link>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html</link><dc:creator>KiMoGiGi</dc:creator><author>KiMoGiGi</author><pubDate>Sun, 15 Mar 2009 05:18:00 GMT</pubDate><guid>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html</guid><wfw:comment>http://www.cnitblog.com/seeyeah/comments/55440.html</wfw:comment><comments>http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/seeyeah/comments/commentRss/55440.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/seeyeah/services/trackbacks/55440.html</trackback:ping><description><![CDATA[<p><span style="COLOR: #009999"><strong>python</strong></span>包含子目录中的模块方法比较简单，关键是能够在sys.path里面找到通向模块文件的路径。<br>下面将具体介绍几种常用情况:<br>（1）主程序与模块程序在同一目录下:<br>如下面程序结构:<br>`-- src<br>&nbsp;&nbsp;&nbsp; |-- mod1.py<br>&nbsp;&nbsp;&nbsp; `-- test1.py<br>&nbsp;&nbsp;&nbsp; 若在程序test1.py中导入模块mod1, 则直接使用<strong><span style="COLOR: #009999">import</span></strong> mod1或from mod1 import *;<br><br>（2）主程序所在目录是模块所在目录的父(或祖辈)目录<br>如下面程序结构:<br>`-- src<br>&nbsp;&nbsp;&nbsp; |-- mod1.py<br>&nbsp;&nbsp;&nbsp; |-- mod2<br>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; `-- mod2.py<br>&nbsp;&nbsp;&nbsp; `-- test1.py<br>&nbsp;&nbsp;&nbsp; 若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2.<br><br>（3）主程序导入上层目录中模块或其他目录(平级)下的模块<br>如下面程序结构:<br>`-- src<br>&nbsp;&nbsp;&nbsp; |-- mod1.py<br>&nbsp;&nbsp;&nbsp; |-- mod2<br>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; `-- mod2.py<br>&nbsp;&nbsp;&nbsp; |-- sub<br>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; `-- test2.py<br>&nbsp;&nbsp;&nbsp; `-- test1.py<br>&nbsp;&nbsp;&nbsp; 若在程序test2.py中导入模块mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2))，src下不必建立该文件。然后调用方式如下:<br>&nbsp;&nbsp; 下面程序执行方式均在程序文件所在目录下执行，如test2.py是在cd sub;之后执行python test2.py<br>而test1.py是在cd src;之后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功。<br>&nbsp;&nbsp; import sys<br>&nbsp;&nbsp; sys.path.append("..")<br>&nbsp;&nbsp; import mod1<br>&nbsp;&nbsp; import mod2.mod2<br><br>&nbsp;（4）从(3)可以看出，导入模块关键是能够根据sys.path环境变量的值，找到具体模块的路径。这里仅介绍上面三种简单情况。<br>来自:http://hi.chinaunix.net/?253639/viewspace-25422</p><img src ="http://www.cnitblog.com/seeyeah/aggbug/55440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/seeyeah/" target="_blank">KiMoGiGi</a> 2009-03-15 13:18 <a href="http://www.cnitblog.com/seeyeah/archive/2009/03/15/55440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>