<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_茶亦醉人何必酒，书能香我无须花!</title><subtitle type="text">张帆风顺破重浪，兰幽山间心坦荡。斌礼厚徳创伟业，志壮凌云走四方！</subtitle><id>http://feed.cnblogs.com/blog/u/13226/rss</id><updated>2011-10-20T06:11:51Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13226/rss"/><entry><id>http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html</id><title type="text">[Misc] Putty 无法连接本机 VMWare 问题的解决</title><summary type="text">本机系统XP sp3 使用putty 无法连接本机的 VMWare Linux 系统，互相能ping通,而且VM和XP都能和网内的其它电脑用putty等工具互连。折腾了好些时间，原来是本机网卡配置造成的，汗啊~~</summary><published>2011-10-20T06:12:00Z</published><updated>2011-10-20T06:12:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html"/><content type="html">&lt;p&gt;问题：&lt;/p&gt;&#xD;
&lt;p&gt;本机系统XP sp3 使用putty 无法连接本机的 VMWare Linux 系统，互相能ping通,而且VM和XP都能和网内的其它电脑用putty等工具互连。&lt;br /&gt;折腾了好些时间，原来是本机网卡配置造成的，汗啊~~&lt;br /&gt;&lt;br /&gt;解决方案：&lt;br /&gt;　　本地连接 --&amp;gt; 属性 --&amp;gt; 配置 --&amp;gt;&amp;nbsp; 高级 --&amp;gt;&amp;nbsp; 硬件校验和 : 　"值" 修改为 "关闭"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;得好好补补这块的知识了.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2218914.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/10/20/2218914.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html</id><title type="text">[Dynamic Language] Python OrderedDict 保证按插入的顺序迭代输出</title><summary type="text">Python 2.7 中的OrderedDict 可以在迭代字典Items的时候保证按每项插入的顺序输出。当删除某项再用同样的key写入时，此项排在迭代的最后，同样是插入顺序排列的。</summary><published>2011-10-10T07:25:00Z</published><updated>2011-10-10T07:25:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html"/><content type="html">&lt;p&gt;Python 2.7 中的OrderedDict 可以在迭代字典Items的时候保证按每项插入的顺序输出。&lt;br /&gt;当删除某项再用同样的key写入时，此项排在迭代的最后，同样是插入顺序排列的。&lt;br /&gt;可以用popitem的last=True/False来控制pop进返回最近插入的还是最早插入的，实际上就是维护了一个双向链表。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;abeen@localhost:~$ python2.7&lt;br /&gt;Python 2.7.2 (default, Oct  9 2011, 20:20:38)&lt;br /&gt;[GCC 4.4.3] on linux2&lt;br /&gt;Type &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;help&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;copyright&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;credits&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;or&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;license&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; more information.&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; collections &lt;span style="color: #0000ff;"&gt;import&lt;/span&gt; OrderedDict&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d = OrderedDict([(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;,1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;tow&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;span style="color: #0000ff;"&gt;del&lt;/span&gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;控制pop返回&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; d = OrderedDict([(x,0) &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; x &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; range(10)])&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem()&lt;br /&gt;(9, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem()&lt;br /&gt;(8, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=True)&lt;br /&gt;(7, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=True)&lt;br /&gt;(6, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=False)&lt;br /&gt;(0, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.popitem(last=False)&lt;br /&gt;(1, 0)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; d.items()&lt;br /&gt;[(2, 0), (3, 0), (4, 0), (5, 0)]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;字典项的迭代情况&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;In [1]: d = dict([(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;,1), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3)])&lt;br /&gt;&lt;br /&gt;In [2]: d&lt;br /&gt;Out[2]: {&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 1, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 3, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 2}&lt;br /&gt;&lt;br /&gt;In [3]: d.items()&lt;br /&gt;Out[3]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 2), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [4]: d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] =4&lt;br /&gt;&lt;br /&gt;In [5]: d&lt;br /&gt;Out[5]: {&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 1, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 3, &lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;: 4}&lt;br /&gt;&lt;br /&gt;In [6]: d.items()&lt;br /&gt;Out[6]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [7]: &lt;span style="color: #0000ff;"&gt;del&lt;/span&gt; d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;In [8]: d.items()&lt;br /&gt;Out[8]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;br /&gt;&lt;br /&gt;In [9]: d[&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;] = 4&lt;br /&gt;&lt;br /&gt;In [10]: d.items()&lt;br /&gt;Out[10]: [(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;three&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 3), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;two&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 4), (&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;one&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;, 1)]&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2205640.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/10/10/2205640.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html</id><title type="text">[Misc]IE浏览器真正全屏幕操作技巧</title><summary type="text">在桌面另外建立一个新的 IE快捷方式，在桌面空白的地方，按鼠标右键，选“新建→快捷方式”，在建立快捷方式的这个对话框中，指令行请输入： “C:Program FilesInternet ExplorerIEXPLORE.EXE” -k 提示：如果你的IE主程序不在这个位置可以自行修改，再次提醒双引号不要忘记喔！另外在 “-k”之前加一空格。 现在你双击这个新快捷方式，IE就会激活到这个非常特殊的全屏幕下，屏幕上除了IE滚动条外，什么都没有。 也可以去掉IE 滚动条:&amp;lt;body scroll=&amp;quot;no&amp;quot;&amp;gt; 去掉滚动条&amp;lt;body style=&amp;quot;over</summary><published>2011-09-14T08:18:00Z</published><updated>2011-09-14T08:18:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html"/><content type="html">&lt;p&gt;在桌面另外建立一个新的 IE快捷方式，在桌面空白的地方，按鼠标右键，选&amp;ldquo;新建&amp;rarr;快捷方式&amp;rdquo;，在建立快捷方式的这个对话框中，指令行请输入：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;ldquo;C:Program FilesInternet ExplorerIEXPLORE.EXE&amp;rdquo; -k&lt;/p&gt;&#xD;
&lt;p&gt;提示：如果你的IE主程序不在这个位置可以自行修改，再次提醒双引号不要忘记喔！另外在 &amp;ldquo;-k&amp;rdquo;之前加一空格。&lt;/p&gt;&#xD;
&lt;p&gt;现在你双击这个新快捷方式，IE就会激活到这个非常特殊的全屏幕下，屏幕上除了IE滚动条外，什么都没有。&lt;/p&gt;&#xD;
&lt;p&gt;也可以去掉IE 滚动条:&lt;/p&gt;&#xD;
&lt;p style="padding-left: 60px;"&gt;&amp;lt;body scroll="no"&amp;gt; 去掉滚动条&#xD;
&lt;br /&gt;&amp;lt;body style="overflow-y:hidden"&amp;gt;去掉垂直滚动条&#xD;
&lt;br /&gt;&amp;lt;body style="overflow-x:hidden"&amp;gt;去掉水平滚动条&lt;/p&gt;&#xD;
&lt;p&gt;由于常用的工具按钮和菜单都没有了，我们需要借助IE的快捷键，以下是常用到的快捷键：&lt;/p&gt;&#xD;
&lt;p&gt;Alt + 左箭头：上一页&lt;/p&gt;&#xD;
&lt;p&gt;Alt + 右箭头：下一页&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + D：加到我的收藏夹&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + H：开启历史文件夹&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + B：开启整理收藏夹&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + L：输入网址，开启新网页&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + N：开新窗口&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + R：刷新(或按 F5)&lt;/p&gt;&#xD;
&lt;p&gt;Ctrl + W：关闭目前的窗口(或按 Alt+F4)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2176360.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/09/14/2176360.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html</id><title type="text">[DotNet]利用反射自动将Web前台传递的数据初始化到对象中</title><summary type="text">Web程序的前后台数据传递一直比较繁琐，最简单的方式可能是form提交后台提取信息进行判断。用 Python 开发习惯了Dict 格式参数的方便。最近帮朋友处理一个 DotNet 程序的时候，突然感觉这些数据传递处理别扭了。前台传递过来的数据后台需要一个个的对应到ORM对象中，实在是太麻烦了。 有没有更好更方便的方式呢？ 于是有了下面的思路。 假设做一个约束，将Web Html中元素的ID 、 Name和后台对象字段名一至， 然后利用DotNet反射提取对象字段值和Form提交来的名称对应赋值，就自动完成了对象数据的初始化。代码测试一下，还是挺好用的 呵呵，如果处于安全考虑，Web Form.</summary><published>2011-07-16T13:40:00Z</published><updated>2011-07-16T13:40:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html"/><content type="html">&lt;p&gt;Web程序的前后台数据传递一直比较繁琐，最简单的方式可能是form提交后台提取信息进行判断。用 Python 开发习惯了Dict 格式参数的方便。最近帮朋友处理一个 DotNet 程序的时候，突然感觉这些数据传递处理别扭了。前台传递过来的数据后台需要一个个的对应到ORM对象中，实在是太麻烦了。&lt;/p&gt;&#xD;
&lt;p&gt;有没有更好更方便的方式呢？ 于是有了下面的思路。&lt;br /&gt;&lt;br /&gt;　　假设做一个约束，将Web Html中元素的ID 、 Name和后台对象字段名一至， 然后利用DotNet反射提取对象字段值和&lt;br /&gt;Form提交来的名称对应赋值，就自动完成了对象数据的初始化。&lt;br /&gt;代码测试一下，还是挺好用的 呵呵，如果处于安全考虑，Web Form提前可以用js进行数据校验，后台赋值时也可以跟&lt;br /&gt;据数据类型进行校验，同样可以DoubleCheck 呵呵。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;示例代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;HTML部分&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;form &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="form1"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="form1"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;table &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;border&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cellspacing&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="0"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; cellpadding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="0"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="addlm"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="first"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;colspan&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="5"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="thead boldblue"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;添加权限&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;权限名称：&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Name"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Name"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="text"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;  class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="onelinetext"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;=""&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;input &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="btnCreate"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="button"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; class&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="bgsubmit"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="确定"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;form&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;JS部分&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;/ 创建栏目&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreatePermission() {&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; validate &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Validate().validate(&lt;br /&gt;        {&lt;br /&gt;            Name: { min: &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, message: &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;名称不能为空!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; }&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (validate) {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; per &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Permission();&lt;br /&gt;        per.create($(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;#form1&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;).serializeArray());&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 创建&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        prototype.create &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(permission, callback) {&lt;br /&gt;        &lt;br /&gt;            $.post(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;/Permission/DoCreatePermission&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, permission,&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt;(data) {&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (data &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Success&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;创建成功!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br /&gt;                            alert(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;创建失败!&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                        }&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;isUndefinedOrNull(callback)) callback(data.Result);&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (data &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;Success&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) TextBoxAllClear();&lt;br /&gt;                    });&lt;br /&gt;        };&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;DotNet部分&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #000000;"&gt;var per &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.GetArguments(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Permission(), &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Request.Form); // 调用&lt;br /&gt;&lt;br /&gt;// 示例&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获取参数值&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="key"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; T GetArguments&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;T&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T t, System.Collections.Specialized.NameValueCollection form)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 提取所有Key值，并转化成小写&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; keys &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; List&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (var k &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; form.AllKeys)&lt;br /&gt;            {&lt;br /&gt;                keys.Add(k.ToLower());&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 构造实例类型，并设置属性值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (PropertyInfo pi &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; t.GetType().GetProperties())&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (keys.Contains(pi.Name.ToLower()))&lt;br /&gt;                {&lt;br /&gt;                    var value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Convert.ChangeType(form.Get(pi.Name), pi.PropertyType);&lt;br /&gt;                    pi.SetValue(t, value, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; t;&lt;br /&gt;        }&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2108427.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/07/16/2108427.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html</id><title type="text">[Database] mongodb mongodump and mongorestore</title><summary type="text">mongodb mongodump and mongorestoreabeen@localhost:/program/mongodb-1.4/bin$ mongodump --helpoptions: --help produce help message -h [ --host ] arg mongo host to connect to -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --</summary><published>2011-06-20T05:55:00Z</published><updated>2011-06-20T05:55:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html"/><content type="html">&lt;strong&gt;mongodb mongodump and mongorestore&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;abeen@localhost:/program/mongodb-1.4/bin$ mongodump --help&lt;br /&gt;options:&lt;br /&gt;&amp;nbsp; --help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; produce help message&lt;br /&gt;&amp;nbsp; -h [ --host ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mongo host to connect to&lt;br /&gt;&amp;nbsp; -d [ --db ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database to use&lt;br /&gt;&amp;nbsp; -c [ --collection ] arg&amp;nbsp; collection to use (some commands)&lt;br /&gt;&amp;nbsp; -u [ --username ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp; username&lt;br /&gt;&amp;nbsp; -p [ --password ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp; password&lt;br /&gt;&amp;nbsp; --dbpath arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directly access mongod data files in this path,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instead of connecting to a mongod instance&lt;br /&gt;&amp;nbsp; -v [ --verbose ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be more verbose (include multiple times for more&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verbosity e.g. -vvvvv)&lt;br /&gt;&amp;nbsp; -o [ --out ] arg (=dump) output directory&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 1 #!/bin/sh&lt;br /&gt;&amp;nbsp; 2&lt;br /&gt;&amp;nbsp; 3 rm -rf /home/abeen/z_abeen_back/database_back/*&lt;br /&gt;&amp;nbsp; 4 cd /program/mongodb-1.4/bin&lt;br /&gt;&amp;nbsp; 5 ./mongodump -h 192.168.1.3 -d test -o /home/abeen/z_abeen_back/database_back&lt;br /&gt;&amp;nbsp; 6 exit 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;abeen@localhost:/program/mongodb-1.4/bin$ mongorestore --help&lt;br /&gt;usage: /usr/lib/mongodb/mongorestore [options] [directory or filename to restore from]&lt;br /&gt;options:&lt;br /&gt;&amp;nbsp; --help&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; produce help message&lt;br /&gt;&amp;nbsp; -h [ --host ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mongo host to connect to&lt;br /&gt;&amp;nbsp; -d [ --db ] arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database to use&lt;br /&gt;&amp;nbsp; -c [ --collection ] arg collection to use (some commands)&lt;br /&gt;&amp;nbsp; -u [ --username ] arg&amp;nbsp;&amp;nbsp; username&lt;br /&gt;&amp;nbsp; -p [ --password ] arg&amp;nbsp;&amp;nbsp; password&lt;br /&gt;&amp;nbsp; --dbpath arg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directly access mongod data files in this path,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instead of connecting to a mongod instance&lt;br /&gt;&amp;nbsp; -v [ --verbose ]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be more verbose (include multiple times for more&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; verbosity e.g. -vvvvv)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;mongorestore -h 92.168.1.3 --directoryperdb /home/abeen/z_abeen_back/database_back/test&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2085185.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/06/20/2085185.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html</id><title type="text">[Linux] Vim 中使用自定义模板来创建文件</title><summary type="text">在用 VIM 新建文件时可以引用自定义模板，来避免重复的数据格式处理化费太多时间。</summary><published>2011-05-18T06:18:00Z</published><updated>2011-05-18T06:18:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html"/><content type="html">&lt;p&gt;在用 VIM 新建文件时可以引用自定义模板，来避免重复的数据格式处理化费太多时间。&lt;br /&gt;&lt;br /&gt;其实方法很简单：&lt;br /&gt;1. 在.vim/template下填加对应语言目录(如python、html)&lt;br /&gt;2. 在对应该目录放入自己的模板文件(如pythonconfig.py、 htmlconfig.html)&lt;br /&gt;3. 在vim的.vimrc配置中加入对应该的模板文件引用，如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp; autocmd BufNewFile *.py 0r ~/.vim/template/python/pythonconfig.py&lt;br /&gt;&amp;nbsp;&amp;nbsp; autocmd BufNewFile *.html 0r ~/.vim/template/html/htmlconfig.html&lt;br /&gt;&lt;br /&gt;在vim中新建对应格式的文件时，就会引用已定义的对应模板来创建文件。&lt;/p&gt;&#xD;
&lt;p&gt;遗憾的是：未发现在模板中使用动态数据的方法，如动态生成日期。若知道请告知一下喽~~&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2050000.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/18/2050000.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html</id><title type="text">[招聘] Python 研发工程师、 前端研发工程师</title><summary type="text">公司在北京研发团队，主要从事搜索引擎和云计算业务。长期招聘技术职位。 Python 工程师 (5人) 1. 熟悉 Linux 基本使用。 2. 熟悉 Linux 上常用服务软件的安装、配置和优化。 3. 熟悉 Python 语言，有一定的开发经验。 4. 熟悉 Python 标准库库使用。 5. 熟悉 Python Tornado、Django、SQLObject/SQLAlchemy 等常用框架。 6. 熟悉 mongodb 数据库。 7. 熟悉 JavaScript jQuery 等。 职位要求：学历不限，两年以上工作经验，能阅读基本英文资料。 工资待遇：6000.00 ~ 8000...</summary><published>2011-05-12T15:28:00Z</published><updated>2011-05-12T15:28:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html"/><content type="html">&lt;p&gt;公司在北京研发团队，主要从事搜索引擎和云计算业务。长期招聘技术职位。 &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;Python 工程师 (5人) &lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;1. 熟悉 Linux 基本使用。 &lt;br /&gt;2. 熟悉 Linux 上常用服务软件的安装、配置和优化。 &lt;br /&gt;3. 熟悉 Python 语言，有一定的开发经验。 &lt;br /&gt;4. 熟悉 Python 标准库库使用。 &lt;br /&gt;5. 熟悉 Python Tornado、Django、SQLObject/SQLAlchemy 等常用框架。 &lt;br /&gt;6. 熟悉 mongodb 数据库。 &lt;br /&gt;7. 熟悉 JavaScript jQuery 等。 &lt;br /&gt; &lt;br /&gt;职位要求：学历不限，两年以上工作经验，能阅读基本英文资料。 &lt;br /&gt;工资待遇：6000.00 ~ 8000.00 （税前，13个月工资） &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;strong&gt;UI 前端开发工程师(５人) &lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;1. 熟悉 CSS+DIV 布局网站，能熟练手写 CSS 和 HTML 代码。 &lt;br /&gt;2. 熟悉 HTML 、XHTML 、 CSS，懂得 WEB标准与规范化网站建设。 &lt;br /&gt;3. 熟悉 Javascript 脚本语言，能熟练的编写修改 js 页面脚本文件。 &lt;br /&gt;4. 熟悉JQuery、MooTools等常用框架。 &lt;br /&gt;5. 熟悉掌握Dreamweaver/Photoshop/Illustrator/Fireworks 等常用图形图像处理软件。 &lt;br /&gt; &lt;br /&gt;职位要求：学历不限，两年以上工作经验。 &lt;br /&gt;工资待遇：5000.00 ~ 7000.00 （税前，13个月工资） &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;工作地点：北京知春路 &lt;br /&gt;联系方式：abeen_8298@msn.com (EMAIL/MSN)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/2044916.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/12/2044916.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html</id><title type="text">[JavaScript] jQuery 表单值相关操作</title><summary type="text">jQuery 表单值相关操作</summary><published>2011-05-08T06:02:00Z</published><updated>2011-05-08T06:02:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html"/><content type="html">jQuery 表单值相关操作&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;设置值&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;选中多选下拉框&lt;br /&gt;$('#selid').val(['1982','1983','1988']);&lt;br /&gt;&lt;br /&gt;选中下拉(框单选)&lt;br /&gt;$('#selid').val(['1982']);&lt;br /&gt;&lt;br /&gt;选中radio&lt;br /&gt;$('input[name="rad"]').val(['3']);&lt;br /&gt;&lt;br /&gt;选中checkbox&lt;br /&gt;$('input[name="chk"]').val(['3','4','6']);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;获取值&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;radio&lt;br /&gt;$("input[name='items']:checked").val();&lt;br /&gt;&lt;br /&gt;radio,checkbox，select被选中项的值&lt;br /&gt;var item = $('input[name=items][checked]').val();&lt;br /&gt;&lt;br /&gt;被选中项的文本&lt;br /&gt;var item = $("select[name=items] option[selected]").text();&lt;br /&gt;&lt;br /&gt;select下拉框的第二个元素为当前选中值&lt;br /&gt;$('#select_id')[0].selectedIndex = 1;&lt;br /&gt;&lt;br /&gt;radio单选组的第二个元素为当前选中值&lt;br /&gt;$('input[name=items]').get(1).checked = true;&lt;br /&gt;&lt;br /&gt;文本框，文本区域&lt;br /&gt;$("#txt").attr("value")；&lt;br /&gt;&lt;br /&gt;多选框checkbox&lt;br /&gt;$("#checkbox_id").attr("value")；&lt;br /&gt;&lt;br /&gt;单选组radio&lt;br /&gt;&amp;nbsp;$("input[type=radio][checked]").val();&lt;br /&gt;&lt;br /&gt;下拉框select&lt;br /&gt;&amp;nbsp;$('#sel').val();&lt;br /&gt;&lt;br /&gt;清空内容&lt;br /&gt;$("#txt").attr("value",'');&lt;br /&gt;&lt;br /&gt;填充内容&lt;br /&gt;$("#txt").attr("value",'abeen');&lt;br /&gt;&lt;br /&gt;多选框checkbox未选中&lt;br /&gt;$("#chk1").attr("checked",'');&lt;br /&gt;&lt;br /&gt;多选框checkbox选中&lt;br /&gt;$("#chk2").attr("checked",true);&lt;br /&gt;&lt;br /&gt;判断是否选中&lt;br /&gt;if($("#chk1").attr('checked')==undefined)&lt;br /&gt;&lt;br /&gt;设置value=abeen的项目为当前选中项&lt;br /&gt;$("input[type=radio]").attr("checked",'abeen');&lt;br /&gt;&lt;br /&gt;设置value=abeen的项目为当前选中项&lt;br /&gt;$("#sel").attr("value",'abeen');&lt;br /&gt;&lt;br /&gt;添加下拉框的option&lt;br /&gt;$("&amp;lt;option value='1'&amp;gt;1111&amp;lt;/option&amp;gt;&amp;lt;option value='2'&amp;gt;2222&amp;lt;/option&amp;gt;").appendTo("#sel");&lt;br /&gt;&lt;br /&gt;清空下拉框 &lt;br /&gt;$("#sel").empty()；&lt;img src="http://www.cnblogs.com/abeen/aggbug/2040326.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/05/08/2040326.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html</id><title type="text">[Linux] Ubuntu 下部署 Nginx Flup Django</title><summary type="text">Nginx　　nginx：("engine x") 是一个高性能的 HTTP 和 反向代理 服务器，作用和apache的类似。它可以处理一些静态文件的请求，而对于动态的文件的请求，它可以通过fastcgi方式，来分发请求给不同的动态语言处理。</summary><published>2011-02-12T16:15:00Z</published><updated>2011-02-12T16:15:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html"/><content type="html">&lt;strong&gt;Nginx&lt;/strong&gt;&lt;br /&gt;　　nginx：("engine x") 是一个高性能的 HTTP 和 反向代理 服务器，作用和apache的类似。&lt;br /&gt;它可以处理一些静态文件的请求，而对于动态的文件的请求，它可以通过fastcgi方式，&lt;br /&gt;来分发请求给不同的动态语言处理。&lt;br /&gt;&lt;br /&gt;安装nginx&lt;br /&gt;apt-get install nginx&lt;br /&gt;全新安装 apt-get --purge remove&lt;br /&gt;&lt;br /&gt;启动nginx&lt;br /&gt;sudo /etc/init.d/nginx start&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;django &lt;/strong&gt;&lt;br /&gt;　　基于python的一个web框架，它可以我们做一些基础性的东西，比如cookie，session管理，模板机制，权限管理等等。&lt;br /&gt;&lt;br /&gt;安装django&lt;br /&gt;wget -c http://www.djangoproject.com/download/1.0.2/tarball/&lt;br /&gt;tar xzvf Django-1.0.2-final.tar.gz&lt;br /&gt;cd Django-1.0.2-final&lt;br /&gt;sudo python setup.py install&lt;br /&gt;&lt;br /&gt;测试django&lt;br /&gt;cd ~&lt;br /&gt;django-admin.py startproject shanshan&lt;br /&gt;cd shanshan&lt;br /&gt;python manage.py runserver 192.168.1.18:8000&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Flup&lt;/strong&gt;&lt;br /&gt;　　本身是一个使用python写的web服务器软件，它可以接受nginx发来的请求，执行相应的python代码，将结果返回给nginx。&lt;br /&gt;&lt;br /&gt;安装 flup&lt;br /&gt;sudo apt-get install python-flup&lt;br /&gt;&lt;br /&gt;以fastcgi运行django&lt;br /&gt;python manage.py runfcgi method=threaded host=192.168.1.18 port=8000&lt;br /&gt;&lt;br /&gt;配置nginx&lt;br /&gt;&lt;br /&gt;在/etc/nginx 目录下增加一个fastcgi_params.django的文件&lt;br /&gt;内容如下:&lt;br /&gt;fastcgi_param&amp;nbsp; QUERY_STRING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $query_string;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REQUEST_METHOD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request_method;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; CONTENT_TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $content_type;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; CONTENT_LENGTH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $content_length;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; PATH_INFO&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_root$fastcgi_script_name;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SCRIPT_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $fastcgi_script_name;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REQUEST_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $request_uri;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; DOCUMENT_URI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_uri;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; DOCUMENT_ROOT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $document_root;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_PROTOCOL&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_protocol;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; GATEWAY_INTERFACE&amp;nbsp; CGI/1.1;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_SOFTWARE&amp;nbsp;&amp;nbsp;&amp;nbsp; nginx/$nginx_version;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REMOTE_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_addr;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; REMOTE_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_port;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_addr;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_port;&amp;nbsp; &lt;br /&gt;fastcgi_param&amp;nbsp; SERVER_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server_name;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;修改/etc/nginx/sites-enabled/default&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass 192.168.1.18:8000;&amp;nbsp;&amp;nbsp;&amp;nbsp; #端口自己定义&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /home/user/www/testdjango; #django项目路径&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /etc/nginx/fastcgi_params.django; #导入上面生成的文件 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;然后 启动 manage.py runfcgi host=192.168.1.18 port=8000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/1952916.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/02/13/1952916.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/abeen/archive/2011/01/20/1940322.html</id><title type="text">[Dynamic Language] Pylint 分析Python代码格式规范</title><summary type="text">Pylint 是一个 Python 代码分析工具，它分析 Python 代码中的错误，查找不符合代码风格标准（Pylint 默认使用的代码风格是 PEP 8）和有潜在问题的代码。    * Pylint 是一个 Python 工具，除了平常代码分析工具的作用之外，它提供了更多的功能：如检查一行代码的长度，变量名是否符合命名标准，一个声明过的接口是否被真正实现等。    * Pylint 的一个很大的好处是它的高可配置性，高可定制性，并且可以很容易写小插件来添加功能。    * 如果运行两次 Pylint，它会同时显示出当前和上次的运行结果，从而可以看出代码质量是否得到了改进。</summary><published>2011-01-20T08:35:00Z</published><updated>2011-01-20T08:35:00Z</updated><author><name>※ABeen※</name><uri>http://www.cnblogs.com/abeen/</uri></author><link rel="alternate" href="http://www.cnblogs.com/abeen/archive/2011/01/20/1940322.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/abeen/archive/2011/01/20/1940322.html"/><content type="html">&lt;p&gt;Pylint 是一个 Python 代码分析工具，它分析 Python 代码中的错误，查找不符合代码风格标准（Pylint 默认使用的代码风格是 PEP 8）和有潜在问题的代码。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Pylint 是一个 Python 工具，除了平常代码分析工具的作用之外，它提供了更多的功能：如检查一行代码的长度，变量名是否符合命名标准，一个声明过的接口是否被真正实现等。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Pylint 的一个很大的好处是它的高可配置性，高可定制性，并且可以很容易写小插件来添加功能。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 如果运行两次 Pylint，它会同时显示出当前和上次的运行结果，从而可以看出代码质量是否得到了改进。&lt;br /&gt;&lt;br /&gt;演示代码：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;!/usr/bin/env python&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; _*_ conding:utf-8 _*_&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; datetime&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyFile:&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;7&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;__init__&lt;/span&gt;&lt;span style="color: #000000;"&gt;(self, file_full_name):&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;         self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; file_full_name&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; append(self, value):&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;         f &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; open(self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;         f.write(value)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;13&lt;/span&gt;&lt;span style="color: #000000;"&gt;         f.close()&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;14&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;15&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; content(self):&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;16&lt;/span&gt;&lt;span style="color: #000000;"&gt;         f &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; open(self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;r&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;17&lt;/span&gt;&lt;span style="color: #000000;"&gt;         &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; f.read()&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;18&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;19&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;__name__&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;__main__&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;21&lt;/span&gt;&lt;span style="color: #000000;"&gt;     f &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyFile(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;test.txt&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;22&lt;/span&gt;&lt;span style="color: #000000;"&gt;     f.append(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;abeen....&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; str(datetime.datetime.now()) &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\n&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;23&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; f.content()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;代码分析结果：&lt;/strong&gt;&lt;br /&gt;abeen@localhost:~/learn_test/file$ pylint file_test.py&lt;br /&gt;************* Module file_test&lt;br /&gt;C:&amp;nbsp; 1: Missing docstring&lt;br /&gt;C:&amp;nbsp; 6:MyFile: Missing docstring&lt;br /&gt;W: 11:MyFile.append: Redefining name 'f' from outer scope (line 21)&lt;br /&gt;C: 10:MyFile.append: Missing docstring&lt;br /&gt;C: 11:MyFile.append: Invalid name "f" (should match [a-z_][a-z0-9_]{2,30}$)&lt;br /&gt;W: 16:MyFile.content: Redefining name 'f' from outer scope (line 21)&lt;br /&gt;C: 15:MyFile.content: Missing docstring&lt;br /&gt;C: 16:MyFile.content: Invalid name "f" (should match [a-z_][a-z0-9_]{2,30}$)&lt;br /&gt;C: 21: Invalid name "f" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)&lt;br /&gt;&lt;br /&gt;Report&lt;br /&gt;======&lt;br /&gt;15 statements analysed.&lt;br /&gt;&lt;br /&gt;Raw metrics&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |previous |difference |&lt;br /&gt;+==========+=======+======+=========+===========+&lt;br /&gt;|code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |80.00 |16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|docstring |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|comment&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |10.00 |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|empty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |10.00 |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Duplication&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |now&amp;nbsp;&amp;nbsp; |previous |difference |&lt;br /&gt;+=========================+======+=========+===========+&lt;br /&gt;|nb duplicated lines&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;|percent duplicated lines |0.000 |0.000&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Statistics by type&lt;br /&gt;------------------&lt;br /&gt;&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |old number |difference |%documented |%badname |&lt;br /&gt;+=========+=======+===========+===========+============+=========+&lt;br /&gt;|module&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|class&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|method&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |33.33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|function |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;&lt;br /&gt;Messages by category&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |previous |difference |&lt;br /&gt;+===========+=======+=========+===========+&lt;br /&gt;|convention |7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|refactor&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|warning&amp;nbsp;&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Messages&lt;br /&gt;--------&lt;br /&gt;&lt;br /&gt;+-----------+------------+&lt;br /&gt;|message id |occurrences |&lt;br /&gt;+===========+============+&lt;br /&gt;|C0111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+------------+&lt;br /&gt;|C0103&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+------------+&lt;br /&gt;|W0621&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+------------+&lt;br /&gt;&lt;br /&gt;Global evaluation&lt;br /&gt;-----------------&lt;br /&gt;Your code has been rated at 4.00/10 (previous run: 4.00/10)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;修改后代码：&lt;/strong&gt;&lt;/p&gt;&#xD;
&amp;nbsp;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt;!/usr/bin/env python&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; _*_ conding:utf-8 _*_&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #800000;"&gt;&lt;br /&gt;  5     test class&lt;br /&gt;  6     author : abeen&lt;br /&gt;  7     email  : abeen_8298@msn.com&lt;br /&gt;  8 &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #000000;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MyFile:&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;11&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #800000;"&gt; class &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;12&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;__init__&lt;/span&gt;&lt;span style="color: #000000;"&gt;(self, file_full_name):&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;13&lt;/span&gt;&lt;span style="color: #000000;"&gt;         self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; file_full_name&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;14&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;15&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; append(self, value):&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;16&lt;/span&gt;&lt;span style="color: #000000;"&gt;         &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #800000;"&gt; append &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;17&lt;/span&gt;&lt;span style="color: #000000;"&gt;         current_file &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; open(self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;a&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;18&lt;/span&gt;&lt;span style="color: #000000;"&gt;         current_file.write(value)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;19&lt;/span&gt;&lt;span style="color: #000000;"&gt;         current_file.close()&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;20&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;21&lt;/span&gt;&lt;span style="color: #000000;"&gt;     &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;def&lt;/span&gt;&lt;span style="color: #000000;"&gt; content(self):&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;22&lt;/span&gt;&lt;span style="color: #000000;"&gt;         &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #800000;"&gt; content &lt;/span&gt;&lt;span style="color: #800000;"&gt;"""&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;23&lt;/span&gt;&lt;span style="color: #000000;"&gt;         current_file &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; open(self.&lt;/span&gt;&lt;span style="color: #800080;"&gt;__file_full_name&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;r&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;24&lt;/span&gt;&lt;span style="color: #000000;"&gt;         &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; current_file.read()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;代码分析：&lt;/strong&gt;&lt;br /&gt;abeen@localhost:~/learn_test/file$ pylint file_test.py&lt;br /&gt;No config file found, using default configuration&lt;br /&gt;&lt;br /&gt;Report&lt;br /&gt;======&lt;br /&gt;10 statements analysed.&lt;br /&gt;&lt;br /&gt;Raw metrics&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |previous |difference |&lt;br /&gt;+==========+=======+======+=========+===========+&lt;br /&gt;|code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |45.83 |11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|docstring |8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |33.33 |8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|comment&amp;nbsp;&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |8.33&amp;nbsp; |2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;|empty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |12.50 |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+----------+-------+------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Duplication&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |now&amp;nbsp;&amp;nbsp; |previous |difference |&lt;br /&gt;+=========================+======+=========+===========+&lt;br /&gt;|nb duplicated lines&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;|percent duplicated lines |0.000 |0.000&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-------------------------+------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Statistics by type&lt;br /&gt;------------------&lt;br /&gt;&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |old number |difference |%documented |%badname |&lt;br /&gt;+=========+=======+===========+===========+============+=========+&lt;br /&gt;|module&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |100.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|class&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |100.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|method&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |100.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;|function |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+---------+-------+-----------+-----------+------------+---------+&lt;br /&gt;&lt;br /&gt;Messages by category&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |number |previous |difference |&lt;br /&gt;+===========+=======+=========+===========+&lt;br /&gt;|convention |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|refactor&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|warning&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;|error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;+-----------+-------+---------+-----------+&lt;br /&gt;&lt;br /&gt;Global evaluation&lt;br /&gt;-----------------&lt;br /&gt;Your code has been rated at 10.00/10 (previous run: 10.00/10)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pylint 的常用命令行参数&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * -h,--help&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 显示所有帮助信息。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * --generate-rcfile&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以使用 pylint --generate-rcfile 来生成一个配置文件示例。可以使用重定向把这个配置文件保存下来用做以后使用。也可以在前面加上其它选项，使这些选项的值被包含在这个产生的配置文件里。如：pylint --persistent=n --generate-rcfile &amp;gt; pylint.conf，查看 pylint.conf，可以看到 persistent=no，而不再是其默认值 yes。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * --rcfile=&amp;lt;file&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 指定一个配置文件。把使用的配置放在配置文件中，这样不仅规范了自己代码，也可以方便地和别人共享这些规范。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * -i &amp;lt;y_or_n&amp;gt;, --include-ids=&amp;lt;y_or_n&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在输出中包含 message 的 id, 然后通过 pylint --help-msg=&amp;lt;msg-id&amp;gt;来查看这个错误的详细信息，这样可以具体地定位错误。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * -r &amp;lt;y_or_n&amp;gt;, --reports=&amp;lt;y_or_n&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 默认是 y, 表示 Pylint 的输出中除了包含源代码分析部分，也包含报告部分。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * --files-output=&amp;lt;y_or_n&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 将每个 module /package 的 message 输出到一个以 pylint_module/package. [txt|html] 命名的文件中，如果有 report 的话，输出到名为 pylint_global.[txt|html] 的文件中。默认是输出到屏幕上不输出到文件里。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * -f &amp;lt;format&amp;gt;, --output-format=&amp;lt;format&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 设置输出格式。可以选择的格式有 text, parseable, colorized, msvs (visual studio) 和 html, 默认的输出格式是 text。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * --disable-msg= &amp;lt;msg ids&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 禁止指定 id 的 message. 比如说输出中包含了 W0402 这个 warning 的 message, 如果不希望它在输出中出现，可以使用 --disable-msg= W0402&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;源代码分析：&lt;/strong&gt;&lt;br /&gt;对于每一个 Python 模块，Pylint 的结果中首先显示一些"*"字符 , 后面紧跟模块的名字，然后是一系列的 message, message 的格式如下：&lt;br /&gt;&amp;nbsp;MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE &lt;br /&gt;&lt;br /&gt;MESSAGE_TYPE 有如下几种：&lt;br /&gt;(C) 惯例。违反了编码风格标准&lt;br /&gt;(R) 重构。写得非常糟糕的代码。&lt;br /&gt;(W) 警告。某些 Python 特定的问题。&lt;br /&gt;(E) 错误。很可能是代码中的错误。&lt;br /&gt;(F) 致命错误。阻止 Pylint 进一步运行的错误。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;报告部分：&lt;/strong&gt;&lt;br /&gt;在源代码分析结束后面，会有一系列的报告，每个报告关注于项目的某些方面，如每种类别的 message 的数目，模块的依赖关系等等。具体来说，报告中会包含如下的方面：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o 检查的 module 的个数。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o 对于每个 module, 错误和警告在其中所占的百分比。比如有两个 module A 和 B, 如果一共检查出来 4 个错误，1 个错误是在 A 中，3 个错误是在 B 中，那么 A 的错误的百分比是 25%, B 的错误的百分比是 75%。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; o 错误，警告的总数量。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/abeen/aggbug/1940322.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/abeen/archive/2011/01/20/1940322.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
