﻿<?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>C++博客-我希望你是我独家记忆-随笔分类-python</title><link>http://www.cppblog.com/Hero/category/11347.html</link><description> 一段永远封存的记忆，随风而去</description><language>zh-cn</language><lastBuildDate>Sat, 15 Aug 2009 03:53:03 GMT</lastBuildDate><pubDate>Sat, 15 Aug 2009 03:53:03 GMT</pubDate><ttl>60</ttl><item><title>POI_1</title><link>http://www.cppblog.com/Hero/archive/2009/08/05/92266.html</link><dc:creator>Hero</dc:creator><author>Hero</author><pubDate>Wed, 05 Aug 2009 03:33:00 GMT</pubDate><guid>http://www.cppblog.com/Hero/archive/2009/08/05/92266.html</guid><wfw:comment>http://www.cppblog.com/Hero/comments/92266.html</wfw:comment><comments>http://www.cppblog.com/Hero/archive/2009/08/05/92266.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Hero/comments/commentRss/92266.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Hero/services/trackbacks/92266.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 14pt; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span>&nbsp;<span style="COLOR: #000000">//</span><span style="COLOR: #000000">Hiro&nbsp;POI_1&nbsp;accepted&nbsp;&nbsp;</span><span style="COLOR: #000000">0.04</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">.7M&nbsp;&nbsp;PYTH&nbsp;&nbsp;<br></span><span style="COLOR: #008080">2</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">3</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;:<br></span><span style="COLOR: #008080">4</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;input()<br></span><span style="COLOR: #008080">5</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(int)(a)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">&nbsp;:<br></span><span style="COLOR: #008080">6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">&nbsp;;<br></span><span style="COLOR: #008080">7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="FONT-SIZE: 14pt; COLOR: #000000">(a)&nbsp;;<br></span><span style="COLOR: #008080">8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">9</span>&nbsp;<span style="COLOR: #000000"></span></div>
<img src ="http://www.cppblog.com/Hero/aggbug/92266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Hero/" target="_blank">Hero</a> 2009-08-05 11:33 <a href="http://www.cppblog.com/Hero/archive/2009/08/05/92266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的Python库</title><link>http://www.cppblog.com/Hero/archive/2009/07/29/91582.html</link><dc:creator>Hero</dc:creator><author>Hero</author><pubDate>Wed, 29 Jul 2009 06:01:00 GMT</pubDate><guid>http://www.cppblog.com/Hero/archive/2009/07/29/91582.html</guid><wfw:comment>http://www.cppblog.com/Hero/comments/91582.html</wfw:comment><comments>http://www.cppblog.com/Hero/archive/2009/07/29/91582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Hero/comments/commentRss/91582.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Hero/services/trackbacks/91582.html</trackback:ping><description><![CDATA[<fieldset>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tkinter———— Python默认的图形界面接口。<br>　　Tkinter是一个和Tk接口的Python模块，Tkinter库提供了对Tk API的接口，它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言，用于简化shell下复杂程序的开发，Tk工具包是和Tcl一起开发的，目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件，如一个按钮、一个滚动条等。通过Tk提供的这些小部件，我们就可快速地进行GUI开发。Perl、Scheme等语言也利用Tk库进行GUI开发。Tkinter是跨平台，在各种平台下都能使用。<br>　　Python Imaging Library(PIL)————python提供强大的图形处理的能力，并提供广泛的图形文件格式支持，该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理，如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。<br>　　Pmw(Python megawidgets)Python超级GUI组件集————一个在python中利用Tkinter模块构建的高级GUI组件，每个Pmw都合并了一个或多个Tkinter组件，以实现更有用和更复杂的功能。<br>　　PyXML———— 用Python解析和处理XML文档的工具包，包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容：<br>　　xmlproc: 一个符合规范的XML解析器。<br>　　Expat: 一个快速的，非验证的XML解析器。 还有其他<br>　　和他同级别的还有 PyHtml PySGML<br>　　PyGame———— 用于多媒体开发和游戏软件开发的模块。<br>　　PyOpenGL———— 模块封装了&#8220;OpenGL应用程序编程接口&#8221;，通过该模块python程序员可在程序中集成2D和3D的图形。<br>　　NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库，主要用于处理任意维数的固定类型数组，简单说就是一个矩阵库。它的低层代码使用C来编写，所以速度的优势很明显。NumPy是Numarray的后继者，用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包，目标是取代 Magma, Maple, Mathematica和Matlab 这类工具。<br>　　MySQLdb模块———— 用于连接MySQL数据库。还有用于zope的ZMySQLDA模块，通过它就可在zope中连接mysql数据库。<br>　　PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它，你完全可以自信的尝试自己制造Photoshop<br>　　PyQt ———— 用于python的Qt开发库。QT就是实现了KDE环境的那个库，由一系列的模块组成，有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml，包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块，它包含一个QScintilla库。该库是 Scintillar编辑器类的Qt接口。<br>　　PyMedia ———— 用于多媒体操作的python模块。它提供了丰富而简单的接口用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。<br>　　Psyco ———— 一个Python代码加速度器，可使Python代码的执行速度提高到与编译语言一样的水平。<br>　　Python-ldap ———— 提供一组面向对象的API，可方便地在python中访问ldap目录服务，它基于OpenLDAP2.x。<br>　　smtplib模块 ———— 发送电子邮件。<br>　　ftplib模块 ———— 定义了FTP类和一些方法，用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序，用于下载文件或镜像站点。如果想了解ftp协议的详细内容，请参考RFC959。<br>　　xmpppy模块 ———— Jabber服务器采用开发的XMPP协议，Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说，我们可以通过该模块与Jabber服务器通信，是不是很Cool。<br>　　下面这些就不详细介绍，只列出名字和功能<br>　　adodb ———— ADO数据库连接组件<br>　　bsddb3 ———— BerkeleyDB的连接组件<br>　　chardet ———— 编码检测<br>　　Cheetah ———— 构建和扩充任何种类的基于文本的内容<br>　　cherrypy ———— 一个WEB framework<br>　　ctypes ———— 用来调用动态链接库<br>　　Cx-oracle ———— 连接oracle的工具<br>　　DBUtils ———— 数据库连接池<br>　　django ———— 一个WEB framework<br>　　DPKT ———— raw-scoket网络编程<br>　　docutils ———— 用来写文档的<br>　　dpkt ———— 数据包的解包和组包<br>　　feedparser ———— rss解析<br>　　Kodos ———— 正则表达式调试工具<br>　　Mechanize ———— 爬虫连接网站常用<br>　　pefile ———— windows pe文件解析器<br>　　py2exe ———— 用来生成windows可执行文件<br>　　pycurl ———— URL处理工具<br>　　pydot ———— 画图的，graphiz<br>　　pyevent ———— Python的事件支持<br>　　pylint ———— 培养良好的编码习惯<br>　　Pylons ———— 又一个web framework<br>　　pypcap ———— 抓包的<br>　　pysqlite2 ———— SQLite的连接组件<br>　　python-dnet ———— 控制网络安全的其他设备<br>　　pythonwin ———— Python的Windows扩展<br>　　pywmi ———— 省了好多折腾功夫<br>　　reportlab ———— Python操作PDF的Libary。<br>　　scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google &#8220;Silver Needle in the Skype&#8221;<br>　　scons ———— 项目构建工具，写好了模板用起来还是很方便的<br>　　sendpkt ———— Python发包<br>　　setuptools ———— 一套python包管理机制<br>　　simplejson ———— JSON的支持<br>　　sqlalchemy ———— SQL数据库连接池<br>　　SQLObject ———— 数据库连接池<br>　　twisted ———— 巨无霸的网络编程框架<br>　　winpdb ———— 自己的程序或者用别的库不太明白的时候就靠它了<br>　　wxPython ———— GUI编程框架,熟悉MFC的人会非常喜欢，简直是同一架构</fieldset>
<img src ="http://www.cppblog.com/Hero/aggbug/91582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Hero/" target="_blank">Hero</a> 2009-07-29 14:01 <a href="http://www.cppblog.com/Hero/archive/2009/07/29/91582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>os.walk()</title><link>http://www.cppblog.com/Hero/archive/2009/07/29/91566.html</link><dc:creator>Hero</dc:creator><author>Hero</author><pubDate>Wed, 29 Jul 2009 02:59:00 GMT</pubDate><guid>http://www.cppblog.com/Hero/archive/2009/07/29/91566.html</guid><wfw:comment>http://www.cppblog.com/Hero/comments/91566.html</wfw:comment><comments>http://www.cppblog.com/Hero/archive/2009/07/29/91566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Hero/comments/commentRss/91566.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Hero/services/trackbacks/91566.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<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; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">Generate&nbsp;the&nbsp;file&nbsp;names&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;a&nbsp;directory&nbsp;tree&nbsp;by&nbsp;walking&nbsp;the&nbsp;tree&nbsp;either&nbsp;top</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">down&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;bottom</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">up.&nbsp;For&nbsp;each&nbsp;directory&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;tree&nbsp;rooted&nbsp;at&nbsp;directory&nbsp;top&nbsp;(including&nbsp;top&nbsp;itself),&nbsp;it&nbsp;yields&nbsp;a&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">tuple&nbsp;(dirpath,&nbsp;dirnames,&nbsp;filenames).<br><br>dirpath&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;a&nbsp;string,&nbsp;the&nbsp;path&nbsp;to&nbsp;the&nbsp;directory.&nbsp;dirnames&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;a&nbsp;list&nbsp;of&nbsp;the&nbsp;names&nbsp;of&nbsp;the&nbsp;subdirectories&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirpath&nbsp;(excluding&nbsp;</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">.</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">and</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">).&nbsp;filenames&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;a&nbsp;list&nbsp;of&nbsp;the&nbsp;names&nbsp;of&nbsp;the&nbsp;non</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">directory&nbsp;files&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirpath.&nbsp;Note&nbsp;that&nbsp;the&nbsp;names&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;lists&nbsp;contain&nbsp;no&nbsp;path&nbsp;components.&nbsp;To&nbsp;get&nbsp;a&nbsp;full&nbsp;path&nbsp;(which&nbsp;begins&nbsp;with&nbsp;top)&nbsp;to&nbsp;a&nbsp;file&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;directory&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirpath,&nbsp;do&nbsp;os.path.join(dirpath,&nbsp;name).<br><br>If&nbsp;optional&nbsp;argument&nbsp;topdown&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;True&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">not</span><span style="COLOR: #000000">&nbsp;specified,&nbsp;the&nbsp;triple&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;a&nbsp;directory&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;generated&nbsp;before&nbsp;the&nbsp;triples&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;any&nbsp;of&nbsp;its&nbsp;subdirectories&nbsp;(directories&nbsp;are&nbsp;generated&nbsp;top</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">down).&nbsp;If&nbsp;topdown&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;False,&nbsp;the&nbsp;triple&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;a&nbsp;directory&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;generated&nbsp;after&nbsp;the&nbsp;triples&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;all&nbsp;of&nbsp;its&nbsp;subdirectories&nbsp;(directories&nbsp;are&nbsp;generated&nbsp;bottom</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">up).<br><br>When&nbsp;topdown&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;True,&nbsp;the&nbsp;caller&nbsp;can&nbsp;modify&nbsp;the&nbsp;dirnames&nbsp;list&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">place&nbsp;(perhaps&nbsp;using&nbsp;</span><span style="COLOR: #0000ff">del</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;slice&nbsp;assignment),&nbsp;</span><span style="COLOR: #0000ff">and</span><span style="COLOR: #000000">&nbsp;walk()&nbsp;will&nbsp;only&nbsp;recurse&nbsp;into&nbsp;the&nbsp;subdirectories&nbsp;whose&nbsp;names&nbsp;remain&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirnames;&nbsp;this&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;prune&nbsp;the&nbsp;search,&nbsp;impose&nbsp;a&nbsp;specific&nbsp;order&nbsp;of&nbsp;visiting,&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;even&nbsp;to&nbsp;inform&nbsp;walk()&nbsp;about&nbsp;directories&nbsp;the&nbsp;caller&nbsp;creates&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;renames&nbsp;before&nbsp;it&nbsp;resumes&nbsp;walk()&nbsp;again.&nbsp;Modifying&nbsp;dirnames&nbsp;when&nbsp;topdown&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;False&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;ineffective,&nbsp;because&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;bottom</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">up&nbsp;mode&nbsp;the&nbsp;directories&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirnames&nbsp;are&nbsp;generated&nbsp;before&nbsp;dirpath&nbsp;itself&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;generated.<br><br>By&nbsp;default&nbsp;errors&nbsp;</span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000">&nbsp;the&nbsp;listdir()&nbsp;call&nbsp;are&nbsp;ignored.&nbsp;If&nbsp;optional&nbsp;argument&nbsp;onerror&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;specified,&nbsp;it&nbsp;should&nbsp;be&nbsp;a&nbsp;function;&nbsp;it&nbsp;will&nbsp;be&nbsp;called&nbsp;with&nbsp;one&nbsp;argument,&nbsp;an&nbsp;OSError&nbsp;instance.&nbsp;It&nbsp;can&nbsp;report&nbsp;the&nbsp;error&nbsp;to&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">&nbsp;with&nbsp;the&nbsp;walk,&nbsp;</span><span style="COLOR: #0000ff">or</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">raise</span><span style="COLOR: #000000">&nbsp;the&nbsp;exception&nbsp;to&nbsp;abort&nbsp;the&nbsp;walk.&nbsp;Note&nbsp;that&nbsp;the&nbsp;filename&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;available&nbsp;as&nbsp;the&nbsp;filename&nbsp;attribute&nbsp;of&nbsp;the&nbsp;exception&nbsp;object.<br><br>By&nbsp;default,&nbsp;walk()&nbsp;will&nbsp;</span><span style="COLOR: #0000ff">not</span><span style="COLOR: #000000">&nbsp;walk&nbsp;down&nbsp;into&nbsp;symbolic&nbsp;links&nbsp;that&nbsp;resolve&nbsp;to&nbsp;directories.&nbsp;Set&nbsp;followlinks&nbsp;to&nbsp;True&nbsp;to&nbsp;visit&nbsp;directories&nbsp;pointed&nbsp;to&nbsp;by&nbsp;symlinks,&nbsp;on&nbsp;systems&nbsp;that&nbsp;support&nbsp;them.<br><br>New&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;version&nbsp;</span><span style="COLOR: #000000">2.6</span><span style="COLOR: #000000">:&nbsp;The&nbsp;followlinks&nbsp;parameter.<br><br>Note<br><br>Be&nbsp;aware&nbsp;that&nbsp;setting&nbsp;followlinks&nbsp;to&nbsp;True&nbsp;can&nbsp;lead&nbsp;to&nbsp;infinite&nbsp;recursion&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;a&nbsp;link&nbsp;points&nbsp;to&nbsp;a&nbsp;parent&nbsp;directory&nbsp;of&nbsp;itself.&nbsp;walk()&nbsp;does&nbsp;</span><span style="COLOR: #0000ff">not</span><span style="COLOR: #000000">&nbsp;keep&nbsp;track&nbsp;of&nbsp;the&nbsp;directories&nbsp;it&nbsp;visited&nbsp;already.<br><br>Note<br><br>If&nbsp;you&nbsp;</span><span style="COLOR: #0000ff">pass</span><span style="COLOR: #000000">&nbsp;a&nbsp;relative&nbsp;pathname,&nbsp;don&#8217;t&nbsp;change&nbsp;the&nbsp;current&nbsp;working&nbsp;directory&nbsp;between&nbsp;resumptions&nbsp;of&nbsp;walk().&nbsp;walk()&nbsp;never&nbsp;changes&nbsp;the&nbsp;current&nbsp;directory,&nbsp;</span><span style="COLOR: #0000ff">and</span><span style="COLOR: #000000">&nbsp;assumes&nbsp;that&nbsp;its&nbsp;caller&nbsp;doesn&#8217;t&nbsp;either.<br><br>This&nbsp;example&nbsp;displays&nbsp;the&nbsp;number&nbsp;of&nbsp;bytes&nbsp;taken&nbsp;by&nbsp;non</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">directory&nbsp;files&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;each&nbsp;directory&nbsp;under&nbsp;the&nbsp;starting&nbsp;directory,&nbsp;</span><span style="COLOR: #0000ff">except</span><span style="COLOR: #000000">&nbsp;that&nbsp;it&nbsp;doesn&#8217;t&nbsp;look&nbsp;under&nbsp;any&nbsp;CVS&nbsp;subdirectory:<br><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;os<br></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000">&nbsp;os.path&nbsp;</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;join,&nbsp;getsize<br></span><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">python/Lib/email</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,&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">consumes</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;sum(getsize(join(root,&nbsp;name))&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;name&nbsp;</span><span style="COLOR: #0000ff">in</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">bytes&nbsp;in</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000">,&nbsp;len(files),&nbsp;</span><span style="COLOR: #800000">"</span><span style="COLOR: #800000">non-directory&nbsp;files</span><span style="COLOR: #800000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">CVS</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dirs.remove(</span><span style="COLOR: #800000">'</span><span style="COLOR: #800000">CVS</span><span style="COLOR: #800000">'</span><span style="COLOR: #000000">)&nbsp;&nbsp;</span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;don't&nbsp;visit&nbsp;CVS&nbsp;directories</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">In&nbsp;the&nbsp;next&nbsp;example,&nbsp;walking&nbsp;the&nbsp;tree&nbsp;bottom</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">up&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;essential:&nbsp;rmdir()&nbsp;doesn&#8217;t&nbsp;allow&nbsp;deleting&nbsp;a&nbsp;directory&nbsp;before&nbsp;the&nbsp;directory&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;empty:<br><br></span><span style="COLOR: #008000">#</span><span style="COLOR: #008000">&nbsp;Delete&nbsp;everything&nbsp;reachable&nbsp;from&nbsp;the&nbsp;directory&nbsp;named&nbsp;in&nbsp;"top",</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;assuming&nbsp;there&nbsp;are&nbsp;no&nbsp;symbolic&nbsp;links.</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;CAUTION:&nbsp;&nbsp;This&nbsp;is&nbsp;dangerous!&nbsp;&nbsp;For&nbsp;example,&nbsp;if&nbsp;top&nbsp;==&nbsp;'/',&nbsp;it</span><span style="COLOR: #008000"><br>#</span><span style="COLOR: #008000">&nbsp;could&nbsp;delete&nbsp;all&nbsp;your&nbsp;disk&nbsp;files.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;os<br></span><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(top,&nbsp;topdown</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">False):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;name&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;files:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(os.path.join(root,&nbsp;name))<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;name&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;dirs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.rmdir(os.path.join(root,&nbsp;name))<br></span></div>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/Hero/aggbug/91566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Hero/" target="_blank">Hero</a> 2009-07-29 10:59 <a href="http://www.cppblog.com/Hero/archive/2009/07/29/91566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>