<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://tangl99.spaces.live.com/mmm2008-05-17_13.22/rsspretty.aspx?rssquery=en-US;http%3a%2f%2ftangl99.spaces.live.com%2fcategory%2fPython%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Tang Liang's notebook: Python</title><description /><link>http://tangl99.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catPython</link><language>en-US</language><pubDate>Sat, 19 Jul 2008 02:01:44 GMT</pubDate><lastBuildDate>Sat, 19 Jul 2008 02:01:44 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://tangl99.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-508484562895931526</live:id><live:alias>tangl99</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>批量增加文件头注释的python小程序</title><link>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!1110.entry</link><description>&lt;pre style="background:#f6f8ff;color:#000020"&gt;&lt;span style="font-weight:bold;color:#200080"&gt;import&lt;/span&gt; sys
&lt;span style="font-weight:bold;color:#200080"&gt;import&lt;/span&gt; os
&lt;span style="font-weight:bold;color:#200080"&gt;import&lt;/span&gt; glob
&lt;span style="font-weight:bold;color:#200080"&gt;import&lt;/span&gt; &lt;span style="color:#e34adc"&gt;string&lt;/span&gt;

&lt;span style="font-weight:bold;color:#200080"&gt;def&lt;/span&gt; isBlankLine&lt;span style="color:#308080"&gt;(&lt;/span&gt;line&lt;span style="color:#308080"&gt;)&lt;/span&gt;&lt;span style="color:#308080"&gt;:&lt;/span&gt;
    &lt;span style="font-weight:bold;color:#200080"&gt;for&lt;/span&gt; ch &lt;span style="font-weight:bold;color:#200080"&gt;in&lt;/span&gt; line&lt;span style="color:#308080"&gt;:&lt;/span&gt;
        &lt;span style="font-weight:bold;color:#200080"&gt;if&lt;/span&gt; ch &lt;span style="font-weight:bold;color:#200080"&gt;in&lt;/span&gt; &lt;span style="color:#308080"&gt;[&lt;/span&gt;&lt;span style="color:#1060b6"&gt;' '&lt;/span&gt;&lt;span style="color:#308080"&gt;,&lt;/span&gt;&lt;span style="color:#1060b6"&gt;'\t'&lt;/span&gt;&lt;span style="color:#308080"&gt;,&lt;/span&gt;&lt;span style="color:#1060b6"&gt;'\n'&lt;/span&gt;&lt;span style="color:#308080"&gt;]&lt;/span&gt; &lt;span style="color:#308080"&gt;:&lt;/span&gt;
            &lt;span style="font-weight:bold;color:#200080"&gt;continue&lt;/span&gt;
        &lt;span style="font-weight:bold;color:#200080"&gt;else&lt;/span&gt;&lt;span style="color:#308080"&gt;:&lt;/span&gt;
            &lt;span style="font-weight:bold;color:#200080"&gt;return&lt;/span&gt; &lt;span style="color:#e34adc"&gt;False&lt;/span&gt;
    &lt;span style="font-weight:bold;color:#200080"&gt;return&lt;/span&gt; &lt;span style="color:#e34adc"&gt;True&lt;/span&gt;

sys&lt;span style="color:#308080"&gt;.&lt;/span&gt;argv&lt;span style="color:#308080"&gt;.&lt;/span&gt;append&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#1060b6"&gt;'test*.txt'&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
sys&lt;span style="color:#308080"&gt;.&lt;/span&gt;argv&lt;span style="color:#308080"&gt;.&lt;/span&gt;append&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#1060b6"&gt;'comment.txt'&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
&lt;span style="font-weight:bold;color:#200080"&gt;if&lt;/span&gt; &lt;span style="color:#e34adc"&gt;len&lt;/span&gt;&lt;span style="color:#308080"&gt;(&lt;/span&gt;sys&lt;span style="color:#308080"&gt;.&lt;/span&gt;argv&lt;span style="color:#308080"&gt;)&lt;/span&gt; &lt;span style="color:#308080"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#008c00"&gt;3&lt;/span&gt;&lt;span style="color:#308080"&gt;:&lt;/span&gt;
    &lt;span style="color:#e34adc"&gt;exit&lt;/span&gt;&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;

filenames &lt;span style="color:#308080"&gt;=&lt;/span&gt; glob&lt;span style="color:#308080"&gt;.&lt;/span&gt;glob&lt;span style="color:#308080"&gt;(&lt;/span&gt;sys&lt;span style="color:#308080"&gt;.&lt;/span&gt;argv&lt;span style="color:#308080"&gt;[&lt;/span&gt;&lt;span style="color:#008c00"&gt;1&lt;/span&gt;&lt;span style="color:#308080"&gt;]&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
commentfilename &lt;span style="color:#308080"&gt;=&lt;/span&gt; sys&lt;span style="color:#308080"&gt;.&lt;/span&gt;argv&lt;span style="color:#308080"&gt;[&lt;/span&gt;&lt;span style="color:#008c00"&gt;2&lt;/span&gt;&lt;span style="color:#308080"&gt;]&lt;/span&gt;

&lt;span style="color:#595979"&gt;# read the comments&lt;/span&gt;
f &lt;span style="color:#308080"&gt;=&lt;/span&gt; &lt;span style="color:#e34adc"&gt;file&lt;/span&gt;&lt;span style="color:#308080"&gt;(&lt;/span&gt;commentfilename&lt;span style="color:#308080"&gt;)&lt;/span&gt;
commentLines &lt;span style="color:#308080"&gt;=&lt;/span&gt; f&lt;span style="color:#308080"&gt;.&lt;/span&gt;readlines&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
commentLines &lt;span style="color:#308080"&gt;+&lt;/span&gt;&lt;span style="color:#308080"&gt;=&lt;/span&gt; &lt;span style="color:#1060b6"&gt;'\n'&lt;/span&gt;
f&lt;span style="color:#308080"&gt;.&lt;/span&gt;close&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
&lt;span style="font-weight:bold;color:#200080"&gt;print&lt;/span&gt; &lt;span style="color:#e34adc"&gt;string&lt;/span&gt;&lt;span style="color:#308080"&gt;.&lt;/span&gt;join&lt;span style="color:#308080"&gt;(&lt;/span&gt;commentLines&lt;span style="color:#308080"&gt;,&lt;/span&gt; &lt;span style="color:#1060b6"&gt;''&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;

&lt;span style="color:#595979"&gt;# add the comment into each source file&lt;/span&gt;
&lt;span style="font-weight:bold;color:#200080"&gt;for&lt;/span&gt; srcfilename &lt;span style="font-weight:bold;color:#200080"&gt;in&lt;/span&gt; filenames&lt;span style="color:#308080"&gt;:&lt;/span&gt;
    f &lt;span style="color:#308080"&gt;=&lt;/span&gt; &lt;span style="color:#e34adc"&gt;file&lt;/span&gt;&lt;span style="color:#308080"&gt;(&lt;/span&gt;srcfilename&lt;span style="color:#308080"&gt;)&lt;/span&gt;
    srcfileLines &lt;span style="color:#308080"&gt;=&lt;/span&gt; f&lt;span style="color:#308080"&gt;.&lt;/span&gt;readlines&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
    f&lt;span style="color:#308080"&gt;.&lt;/span&gt;close&lt;span style="color:#308080"&gt;(&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
    &lt;span style="color:#595979"&gt;# filter out the previous comment header&lt;/span&gt;
    &lt;span style="font-weight:bold;color:#200080"&gt;for&lt;/span&gt; line &lt;span style="font-weight:bold;color:#200080"&gt;in&lt;/span&gt; srcfileLines&lt;span style="color:#308080"&gt;:&lt;/span&gt;
        &lt;span style="font-weight:bold;color:#200080"&gt;if&lt;/span&gt; isBlankLine&lt;span style="color:#308080"&gt;(&lt;/span&gt;line&lt;span style="color:#308080"&gt;)&lt;/span&gt; &lt;span style="color:#308080"&gt;:&lt;/span&gt;
            &lt;span style="font-weight:bold;color:#200080"&gt;continue&lt;/span&gt;
        &lt;span style="font-weight:bold;color:#200080"&gt;if&lt;/span&gt; line&lt;span style="color:#308080"&gt;[&lt;/span&gt;&lt;span style="color:#008c00"&gt;0&lt;/span&gt;&lt;span style="color:#308080"&gt;]&lt;/span&gt; &lt;span style="color:#308080"&gt;=&lt;/span&gt;&lt;span style="color:#308080"&gt;=&lt;/span&gt; &lt;span style="color:#1060b6"&gt;'#'&lt;/span&gt; &lt;span style="color:#308080"&gt;:&lt;/span&gt;
            srcfileLines &lt;span style="color:#308080"&gt;=&lt;/span&gt; commentLines &lt;span style="color:#308080"&gt;+&lt;/span&gt; srcfileLines
            f &lt;span style="color:#308080"&gt;=&lt;/span&gt; &lt;span style="color:#e34adc"&gt;file&lt;/span&gt;&lt;span style="color:#308080"&gt;(&lt;/span&gt;srcfilename&lt;span style="color:#308080"&gt;,&lt;/span&gt; &lt;span style="color:#1060b6"&gt;'w'&lt;/span&gt;&lt;span style="color:#308080"&gt;)&lt;/span&gt;
            f&lt;span style="color:#308080"&gt;.&lt;/span&gt;writelines&lt;span style="color:#308080"&gt;(&lt;/span&gt;srcfileLines&lt;span style="color:#308080"&gt;)&lt;/span&gt;
            &lt;span style="font-weight:bold;color:#200080"&gt;print&lt;/span&gt; &lt;span style="color:#1060b6"&gt;'Add comment to '&lt;/span&gt;&lt;span style="color:#308080"&gt;+&lt;/span&gt;srcfilename
        &lt;span style="font-weight:bold;color:#200080"&gt;break&lt;/span&gt;
&lt;/pre&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-508484562895931526&amp;page=RSS%3a+%e6%89%b9%e9%87%8f%e5%a2%9e%e5%8a%a0%e6%96%87%e4%bb%b6%e5%a4%b4%e6%b3%a8%e9%87%8a%e7%9a%84python%e5%b0%8f%e7%a8%8b%e5%ba%8f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=tangl99.spaces.live.com&amp;amp;GT1=tangl99"&gt;</description><comments>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!1110.entry#comment</comments><guid isPermaLink="true">http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!1110.entry</guid><pubDate>Wed, 28 Nov 2007 13:54:54 GMT</pubDate><slash:comments>3</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://tangl99.spaces.live.com/blog/cns!F8F17FFBEED1777A!1110/comments/feed.rss</wfw:commentRss><wfw:comment>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!1110.entry#comment</wfw:comment><dcterms:modified>2007-11-28T13:54:54Z</dcterms:modified></item><item><title>Brief Introduction to freeGEP</title><link>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!904.entry</link><description>&lt;p&gt;写一个GEP的程序最少需要多少行的代码？看看我的Open Source Project : &lt;a href="http://code.google.com/p/freegep" target="_blank"&gt;freeGEP&lt;/a&gt; 。一个用python写的GEP程序，总共只有一个py文件，200多行的代码，实现了GEP所需要的所有主要的部件。 &lt;p&gt;  &lt;h3&gt;Introduction&lt;/h3&gt; &lt;p&gt;Gene Expression Programming is a type of Generic Algorithm.This project is a free tool which uses Gene Expression Programming Algorithm to discover the functions or rules from large dataset. It is a smart tool to do the data mining task. The typical usage is mining the functions from the dataset.  &lt;p&gt;To see about the GEP Algorithm, can click this website: &lt;a href="http://www.gene-expression-programming.com/"&gt;http://www.gene-expression-programming.com/&lt;/a&gt; &lt;p&gt;freeGEP is a free and much simple tool which contains the main framework of GEP algorithm. It is easy to use and also allow people easily plugin their own methods or gene operators into the source code of freeGEP to build their own GEP tool.  &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-508484562895931526&amp;page=RSS%3a+Brief+Introduction+to+freeGEP&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=tangl99.spaces.live.com&amp;amp;GT1=tangl99"&gt;</description><comments>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!904.entry#comment</comments><guid isPermaLink="true">http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!904.entry</guid><pubDate>Wed, 20 Jun 2007 04:45:15 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://tangl99.spaces.live.com/blog/cns!F8F17FFBEED1777A!904/comments/feed.rss</wfw:commentRss><wfw:comment>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!904.entry#comment</wfw:comment><dcterms:modified>2007-06-20T04:45:15Z</dcterms:modified></item><item><title>通过pydiction来实现VIM的Word Complete</title><link>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!880.entry</link><description>&lt;p&gt;   一般的IDE里面都有Word Complete功能，带来了很大的方便，比如我们输入一个很长的函数的时候，只需要输入简单的前几个字母，在通过Word Complete就可以自动生成余下的单词。&lt;br&gt;   通过ctags来建立tag文件，是一个标准的word tips的做法，不过建立tag文件比较麻烦，如果不想自己建立，还有一个办法就是通过别人建立的word dictionary词典文件。&lt;br&gt;   对于Python语言来说，有个&lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=850"&gt;pydiction&lt;/a&gt;的词典。除了提供基本的python的module词典外，还提供了一个python脚本来动态增加新的Python module中的word到这个词典文件里面去，比较方便。下载完成过后，需要修改一下_vimrc文件: &lt;p&gt;if has(&amp;quot;autocmd&amp;quot;)&lt;br&gt;  autocmd FileType python set dictionary+=d:\Python25\pydiction&lt;br&gt;  autocmd FileType python set complete+=k&lt;br&gt;endif &lt;p&gt;  这里d:\Python25\pydiction文件就是这个庞大的词典文件。VIM装载个几MB的词典文件一点不会减慢它的编辑速度（这就是VIM强大之处之一）。&lt;br&gt;  随便提示一下，这个_vimrc的script在VIM7.1下通过了，网上有些script只适合VIM 6.0，反正在我的VIM7.1上没有load这个dictionary成功。&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-508484562895931526&amp;page=RSS%3a+%e9%80%9a%e8%bf%87pydiction%e6%9d%a5%e5%ae%9e%e7%8e%b0VIM%e7%9a%84Word+Complete&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=tangl99.spaces.live.com&amp;amp;GT1=tangl99"&gt;</description><comments>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!880.entry#comment</comments><guid isPermaLink="true">http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!880.entry</guid><pubDate>Sat, 09 Jun 2007 10:02:29 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://tangl99.spaces.live.com/blog/cns!F8F17FFBEED1777A!880/comments/feed.rss</wfw:commentRss><wfw:comment>http://tangl99.spaces.live.com/Blog/cns!F8F17FFBEED1777A!880.entry#comment</wfw:comment><dcterms:modified>2007-06-09T10:02:29Z</dcterms:modified></item></channel></rss>