﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-长寿梦的编程手记-随笔分类-python片段</title><link>http://www.cppblog.com/changshoumeng/category/20946.html</link><description>从事工作涉及各种主流编程语言，未来期望使用这些利器，投入到某一专业领域，近期对机器学习与数据挖掘感兴趣。</description><language>zh-cn</language><lastBuildDate>Sat, 31 Dec 2016 10:52:49 GMT</lastBuildDate><pubDate>Sat, 31 Dec 2016 10:52:49 GMT</pubDate><ttl>60</ttl><item><title>curl url 自动解析到内网IP</title><link>http://www.cppblog.com/changshoumeng/archive/2016/12/30/214565.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Fri, 30 Dec 2016 02:26:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/12/30/214565.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/214565.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/12/30/214565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/214565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/214565.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">!/usr/bin/env&nbsp;python</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">##################################################</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">Teach&nbsp;wisedom&nbsp;to&nbsp;my&nbsp;machine,please&nbsp;call&nbsp;me&nbsp;Croco#</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;定时更改/etc/hosts&nbsp;实现不修改程序的情况下，使得程序</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;curl&nbsp;url&nbsp;自动解析到内网IP</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">#################################################</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">from</span>&nbsp;DebugLogger&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;&nbsp;*<br />Logger.init(<span style="color: #800000; ">"</span><span style="color: #800000; ">updatehost</span><span style="color: #800000; ">"</span>)<br /><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;sys<br /><span style="color: #0000FF; ">import</span>&nbsp;time<br /><span style="color: #0000FF; ">import</span>&nbsp;json<br /><span style="color: #0000FF; ">import</span>&nbsp;random<br /><br />special_host&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">chelun.eclicks.cn</span><span style="color: #800000; ">"</span><br />last_data&nbsp;=&nbsp;<span style="color: #800000; ">""</span><br />last_line=<span style="color: #800000; ">""</span><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;selectAnotherIp(iplist,last_ip):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;last_ip&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;iplist:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iplist.remove(last_ip)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(iplist)&nbsp;==&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;random.choice(iplist)<br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;readWebConfAndGetNewIp(last_ip):<br />&nbsp;&nbsp;&nbsp;&nbsp;file_name&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">web.conf</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;os.path.exists(file_name):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">not&nbsp;exits&nbsp;such&nbsp;file:{0}</span><span style="color: #800000; ">"</span>.format(file_name))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;old_data&nbsp;=&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_name,&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">r</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old_data&nbsp;=&nbsp;f.read()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;old_data:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">get&nbsp;empty&nbsp;file:{0}</span><span style="color: #800000; ">"</span>.format(file_name))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;iplist&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js_obj&nbsp;=&nbsp;json.loads(old_data)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;item&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;js_obj[<span style="color: #800000; ">"</span><span style="color: #800000; ">servers</span><span style="color: #800000; ">"</span>]:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;item[<span style="color: #800000; ">"</span><span style="color: #800000; ">status</span><span style="color: #800000; ">"</span>]&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">online</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iplist.append(item[<span style="color: #800000; ">"</span><span style="color: #800000; ">host</span><span style="color: #800000; ">"</span>])<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">read&nbsp;failed&nbsp;from&nbsp;webserver_conf:</span><span style="color: #800000; ">"</span>&nbsp;+&nbsp;file_name&nbsp;+&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">data:</span><span style="color: #800000; ">"</span>&nbsp;+&nbsp;old_data)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;selectAnotherIp(iplist,last_ip)<br /><br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;task():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;last_data<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;special_host<br />&nbsp;&nbsp;&nbsp;&nbsp;file_name&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">hosts.conf</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;file_bak_name&nbsp;=<span style="color: #800000; ">"</span><span style="color: #800000; ">hosts2.conf</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;os.path.exists(file_name):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">not&nbsp;exits&nbsp;such&nbsp;file:{0}</span><span style="color: #800000; ">"</span>.format(file_name))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;old_data&nbsp;=&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_name,<span style="color: #800000; ">"</span><span style="color: #800000; ">r</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old_data&nbsp;=&nbsp;f.readlines()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;old_data:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">get&nbsp;empty&nbsp;file:{0}</span><span style="color: #800000; ">"</span>.format(file_name))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;last_data&nbsp;==&nbsp;old_data:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;line_list1=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;line_list2&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;old_data:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;=&nbsp;line.strip()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;line:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">#</span><span style="color: #800000; ">"</span>&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;line:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list1.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list2.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;special_host&nbsp;&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;line:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list1.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list2.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list1.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr=&nbsp;line.split(<span style="color: #800000; ">"</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(arr)&nbsp;!=&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">error&nbsp;line:{0}</span><span style="color: #800000; ">"</span>.format(line))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipaddr&nbsp;=&nbsp;arr[0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newipaddr&nbsp;=&nbsp;readWebConfAndGetNewIp(ipaddr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;newipaddr:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">not&nbsp;need&nbsp;to&nbsp;change</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;=&nbsp;newipaddr+<span style="color: #800000; ">"</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">"</span>+special_host<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_list2.append(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">change&nbsp;ipaddr:{0}&nbsp;-&gt;&nbsp;newipaddr:{1}</span><span style="color: #800000; ">"</span>.format(ipaddr,newipaddr))<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;os.path.exists(file_bak_name):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(file_bak_name)<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_bak_name,<span style="color: #800000; ">"</span><span style="color: #800000; ">w</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;line_list1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(<span style="color: #800000; ">"</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;os.remove(file_name)<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_name,<span style="color: #800000; ">"</span><span style="color: #800000; ">w</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;line_list2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(line)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(<span style="color: #800000; ">"</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;os.path.exists(file_name):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">update&nbsp;failed,file:{0}</span><span style="color: #800000; ">"</span>.format(file_name),2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">update&nbsp;succ,file:{0}</span><span style="color: #800000; ">"</span>.format(file_name))<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(file_name,<span style="color: #800000; ">"</span><span style="color: #800000; ">r</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last_data&nbsp;=&nbsp;f.readlines()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;uid&nbsp;=&nbsp;os.getuid()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;uid&nbsp;!=&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log(<span style="color: #800000; ">"</span><span style="color: #800000; ">os.getuid()&nbsp;!=&nbsp;0,current&nbsp;uid:{0}</span><span style="color: #800000; ">"</span>.format(uid))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;True:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;task()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(60)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">'</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;task()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">main()</span><span style="color: #008000; "><br /></span><br /></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/214565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-12-30 10:26 <a href="http://www.cppblog.com/changshoumeng/archive/2016/12/30/214565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HOW TO MAKE PASSWORD</title><link>http://www.cppblog.com/changshoumeng/archive/2016/08/04/214107.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 04 Aug 2016 02:56:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/08/04/214107.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/214107.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/08/04/214107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/214107.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/214107.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">HOW&nbsp;TO&nbsp;MAKE&nbsp;PASSWORD</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">BY&nbsp;ZHANGTAO</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;random,sys,time<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(sys.argv)&nbsp;!=&nbsp;2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">usage:python&nbsp;{0}&nbsp;length_of_password</span><span style="color: #800000; ">"</span>.format(sys.argv[0])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;c=sys.argv[1]<br />&nbsp;&nbsp;&nbsp;&nbsp;c=int(c)<br />&nbsp;&nbsp;&nbsp;&nbsp;a1=<span style="color: #800000; ">"</span><span style="color: #800000; ">123456789</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a2=<span style="color: #800000; ">"</span><span style="color: #800000; ">qwertyuipasdfghjklzxcvbnm</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a3=<span style="color: #800000; ">"</span><span style="color: #800000; ">QWERTYUIOPADFGHJKLZXCBNM</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;a4=<span style="color: #800000; ">"</span><span style="color: #800000; ">@$&amp;</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;aList=[a1,a2,a3,a4]<br />&nbsp;&nbsp;&nbsp;&nbsp;s=<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;aLast=5<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(c):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;True:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;=&nbsp;random.choice(aList)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(a)&nbsp;!=&nbsp;aLast:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aLast=len(a)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;aLast&nbsp;==&nbsp;len(a4):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList&nbsp;=&nbsp;[a1,&nbsp;a2,&nbsp;a3]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(0.1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;+=&nbsp;random.choice(a)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">make&nbsp;password:</span><span style="color: #800000; ">"</span>,s<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">len&nbsp;:</span><span style="color: #800000; ">"</span>,len(s)<br /><br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>==<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;main()</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/214107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-08-04 10:56 <a href="http://www.cppblog.com/changshoumeng/archive/2016/08/04/214107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>监控文件变化，通知服务更新配置</title><link>http://www.cppblog.com/changshoumeng/archive/2016/07/28/214063.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 28 Jul 2016 05:46:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/07/28/214063.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/214063.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/07/28/214063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/214063.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/214063.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/usr/bin/env&nbsp;python</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;encoding:utf-8</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;zhangtao&nbsp;2016/07-28</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;monit&nbsp;the&nbsp;change&nbsp;of&nbsp;file;</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">if&nbsp;file&nbsp;is&nbsp;modified,send&nbsp;httpGet&nbsp;request&nbsp;to&nbsp;service,then&nbsp;service&nbsp;reload&nbsp;config</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">############################################&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;urllib2<br /><span style="color: #0000FF; ">from</span>&nbsp;urllib2&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;URLError,&nbsp;HTTPError<br /><span style="color: #0000FF; ">from</span>&nbsp;&nbsp;pyinotify&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;&nbsp;WatchManager,&nbsp;Notifier,&nbsp;ProcessEvent,IN_DELETE,&nbsp;IN_CREATE,IN_MODIFY<br /><span style="color: #0000FF; ">import</span>&nbsp;threading<br /><span style="color: #0000FF; ">from</span>&nbsp;&nbsp;debuglogger&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*&nbsp;<br /><br />config_urls=[<span style="color: #800000; ">"</span><span style="color: #800000; ">http://127.0.0.1:6001/chelun?query=reload1</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">"</span><span style="color: #800000; ">http://127.0.0.1:6001/chelun?query=reload2</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">"</span><span style="color: #800000; ">http://127.0.0.1:6001/chelun?query=reload3</span><span style="color: #800000; ">"</span>]<br />config_files=[<span style="color: #800000; ">"</span><span style="color: #800000; ">service:dispatch.conf</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">"</span><span style="color: #800000; ">service:proxy.conf</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">"</span><span style="color: #800000; ">service:qc.conf</span><span style="color: #800000; ">"</span>]<br />config_flags=[0,0,0]<br />config_timer=0<br />pid_file=<span style="color: #800000; ">"</span><span style="color: #800000; ">run/daemon.pid</span><span style="color: #800000; ">"</span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;doGet(url):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;=&nbsp;urllib2.Request(url)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;urllib2.urlopen(request,&nbsp;timeout=10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;=&nbsp;response.read()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;URLError,&nbsp;e:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;hasattr(e,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=<span style="color: #800000; ">'</span><span style="color: #800000; ">The&nbsp;server&nbsp;couldn\</span><span style="color: #800000; ">'</span>t&nbsp;fulfill&nbsp;the&nbsp;request.&nbsp;errorcode:{0}&nbsp;url:{1}<span style="color: #800000; ">'</span><span style="color: #800000; ">.format(e.code,url)</span><span style="color: #800000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;s<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;hasattr(e,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">reason</span><span style="color: #800000; ">'</span>):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=<span style="color: #800000; ">'</span><span style="color: #800000; ">We&nbsp;failed&nbsp;to&nbsp;reach&nbsp;a&nbsp;server.&nbsp;reason:{0}&nbsp;url:{1}</span><span style="color: #800000; ">'</span>.format(e.reason,url)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;s<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Error</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;func():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;config_files<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;config_flags<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;config_urls<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;config_timer<br />&nbsp;&nbsp;&nbsp;&nbsp;config_timer=0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(3):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;1==config_flags[i]:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=doGet(config_urls[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config_flags[i]=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=<span style="color: #800000; ">"</span><span style="color: #800000; ">fileChange:{0}&nbsp;triggerUrl:{1}&nbsp;rspResult:{2}</span><span style="color: #800000; ">"</span>.format(&nbsp;config_files[i],config_urls[i],result&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger.dumplog(s)<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;startTimer():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;config_timer<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;config_timer&nbsp;!=&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;config_timer=1<br />&nbsp;&nbsp;&nbsp;&nbsp;timer&nbsp;=&nbsp;threading.Timer(5,&nbsp;func)<br />&nbsp;&nbsp;&nbsp;&nbsp;timer.start()<br /><br /><span style="color: #0000FF; ">class</span>&nbsp;EventHandler(ProcessEvent):<br />&nbsp;&nbsp;<span style="color: #800000; ">"""</span><span style="color: #800000; ">事件处理</span><span style="color: #800000; ">"""</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;process_IN_CREATE(self,&nbsp;event):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;&nbsp;&nbsp;"Create&nbsp;file:&nbsp;%s&nbsp;"&nbsp;&nbsp;%&nbsp;&nbsp;&nbsp;os.path.join(event.path,event.name)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;process_IN_DELETE(self,&nbsp;event):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;&nbsp;&nbsp;"Delete&nbsp;file:&nbsp;%s&nbsp;"&nbsp;&nbsp;%&nbsp;&nbsp;&nbsp;os.path.join(event.path,event.name)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><br />&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;process_IN_MODIFY(self,&nbsp;event):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;&nbsp;&nbsp;"Modify&nbsp;file:&nbsp;%s&nbsp;"&nbsp;&nbsp;%&nbsp;&nbsp;&nbsp;os.path.join(event.path,event.name)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">service:dispatch.conf</span><span style="color: #800000; ">"</span>&nbsp;==&nbsp;event.name:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config_flags[0]&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startTimer()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">service:proxy.conf</span><span style="color: #800000; ">"</span>&nbsp;==&nbsp;event.name:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config_flags[1]&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startTimer()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">service:qc.conf</span><span style="color: #800000; ">"</span>&nbsp;==&nbsp;event.name:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config_flags[2]&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startTimer()<br />&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;FSMonitor(path=<span style="color: #800000; ">'</span><span style="color: #800000; ">.</span><span style="color: #800000; ">'</span>):<br />&nbsp;&nbsp;&nbsp;&nbsp;wm&nbsp;=&nbsp;WatchManager()&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">mask&nbsp;=&nbsp;IN_DELETE&nbsp;|&nbsp;IN_CREATE&nbsp;|IN_MODIFY</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;=&nbsp;IN_MODIFY<br />&nbsp;&nbsp;&nbsp;&nbsp;notifier&nbsp;=&nbsp;Notifier(wm,&nbsp;EventHandler())<br />&nbsp;&nbsp;&nbsp;&nbsp;wm.add_watch(path,&nbsp;mask,auto_add=True,rec=True)<br />&nbsp;&nbsp;&nbsp;&nbsp;s=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">now&nbsp;starting&nbsp;monitor&nbsp;%s</span><span style="color: #800000; ">'</span>%(path)<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger.dumplog(s)<br />&nbsp;&nbsp;&nbsp;&nbsp;pid=str(&nbsp;os.getpid()&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(pid_file,<span style="color: #800000; ">"</span><span style="color: #800000; ">w</span><span style="color: #800000; ">"</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;f.write(&nbsp;pid&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;s=<span style="color: #800000; ">"</span><span style="color: #800000; ">pid:{0}</span><span style="color: #800000; ">"</span>.format(pid)<br />&nbsp;&nbsp;&nbsp;&nbsp;Logger.dumplog(&nbsp;s)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;True:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifier.process_events()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;notifier.check_events():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifier.read_events()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;KeyboardInterrupt:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifier.stop()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span><br /><br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;FSMonitor(<span style="color: #800000; ">'</span><span style="color: #800000; ">/data/config/</span><span style="color: #800000; ">'</span>)</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/214063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-07-28 13:46 <a href="http://www.cppblog.com/changshoumeng/archive/2016/07/28/214063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql库表的导出 导入</title><link>http://www.cppblog.com/changshoumeng/archive/2016/07/27/214052.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Wed, 27 Jul 2016 02:19:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/07/27/214052.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/214052.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/07/27/214052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/214052.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/214052.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;http://blog.csdn.net/zcyhappy1314/article/details/8283717</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;MySQLdb<br /><span style="color: #0000FF; ">import</span>&nbsp;sys<br /><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;time<br /><br />mysql&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">/usr/bin/mysql</span><span style="color: #800000; ">"</span><br />mysqldump&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">/usr/bin/mysqldump</span><span style="color: #800000; ">"</span><br />mysql_host&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">127.0.0.1</span><span style="color: #800000; ">"</span><br />mysql_port&nbsp;=&nbsp;3306<br />mysql_user&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">root</span><span style="color: #800000; ">"</span><br />mysql_pwd&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">"</span><br />save_dir&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">temp</span><span style="color: #800000; ">"</span><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;mkdir(path):<br />&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;=&nbsp;path.strip()<br />&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;=&nbsp;path.rstrip(<span style="color: #800000; ">"</span><span style="color: #800000; ">\\</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;os.path.exists(path):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.makedirs(path)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;path<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;pause():<br />&nbsp;&nbsp;&nbsp;&nbsp;raw_input(<span style="color: #800000; ">"</span><span style="color: #800000; ">please&nbsp;enter&nbsp;to&nbsp;continue!</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">doing..</span><span style="color: #800000; ">"</span><br /><br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;dump&nbsp;database&nbsp;,only&nbsp;db-struct,</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">def</span>&nbsp;dumpDatabaseOnlyStruct(dbName=<span style="color: #800000; ">""</span>,dbCount=0):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">dumpDatabaseOnlyStruct:</span><span style="color: #800000; ">"</span>,dbName,dbCount<br />&nbsp;&nbsp;&nbsp;&nbsp;databases=<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;dbCount==0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;databases=dbName<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(dbCount):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;databases&nbsp;+=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}_{1}&nbsp;</span><span style="color: #800000; ">"</span>.format(dbName,i)<br />&nbsp;&nbsp;&nbsp;&nbsp;dbFile&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}.sql</span><span style="color: #800000; ">"</span>.format(save_dir,&nbsp;dbName)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;os.path.exists(dbFile):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">remove&nbsp;file:</span><span style="color: #800000; ">"</span>,&nbsp;dbFile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">#######################</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;cmdStr&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}&nbsp;-h{1}&nbsp;-u{2}&nbsp;-p{3}&nbsp;-d&nbsp;-B&nbsp;{4}&nbsp;&gt;&nbsp;{5}</span><span style="color: #800000; ">"</span>.format(mysqldump,&nbsp;mysql_host,&nbsp;mysql_user,&nbsp;mysql_pwd,&nbsp;databases,dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">------------------dumpDatabaseOnlyStruct---------------</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;cmdStr<br />&nbsp;&nbsp;&nbsp;&nbsp;pause()<br />&nbsp;&nbsp;&nbsp;&nbsp;t1&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;os.system(cmdStr)<br />&nbsp;&nbsp;&nbsp;&nbsp;t2&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;t3&nbsp;=&nbsp;t2&nbsp;-&nbsp;t1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">dumpDatabaseOnlyStruct&nbsp;cmd:{0}&nbsp;\n&gt;&gt;result:{1}&nbsp;useTime:{2}&nbsp;file:{3}</span><span style="color: #800000; ">"</span>.format(cmdStr,&nbsp;result,&nbsp;t3,&nbsp;dbFile)<br /><br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;dump&nbsp;database&nbsp;,&nbsp;db-struct,+&nbsp;db-data</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">db_im_msg_record</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">def</span>&nbsp;dumpDatabaseStructAndData(dbName=<span style="color: #800000; ">""</span>,dbCount=0):<br />&nbsp;&nbsp;&nbsp;&nbsp;databases=<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;dbCount==0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;databases=dbName<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(dbCount):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;databases&nbsp;+=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}_{1}&nbsp;</span><span style="color: #800000; ">"</span>.format(dbName,i)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;dbFile&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}.sql</span><span style="color: #800000; ">"</span>.format(save_dir,&nbsp;dbName)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;os.path.exists(dbFile):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">remove&nbsp;file:</span><span style="color: #800000; ">"</span>,&nbsp;dbFile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">#######################</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;cmdStr&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}&nbsp;-h{1}&nbsp;-u{2}&nbsp;-p{3}&nbsp;-B&nbsp;{4}&nbsp;&gt;&nbsp;{5}</span><span style="color: #800000; ">"</span>.format(mysqldump,&nbsp;mysql_host,&nbsp;mysql_user,&nbsp;mysql_pwd,&nbsp;databases,&nbsp;dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">------------------dumpDatabaseStructAndData---------------</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;cmdStr<br />&nbsp;&nbsp;&nbsp;&nbsp;pause()<br />&nbsp;&nbsp;&nbsp;&nbsp;t1&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;os.system(cmdStr)<br />&nbsp;&nbsp;&nbsp;&nbsp;t2&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;t3&nbsp;=&nbsp;t2&nbsp;-&nbsp;t1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">dumpDatabaseOnlyStruct&nbsp;cmd:{0}&nbsp;\n&gt;&gt;result:{1}&nbsp;useTime:{2}&nbsp;file:{3}</span><span style="color: #800000; ">"</span>.format(cmdStr,&nbsp;result,&nbsp;t3,&nbsp;dbFile)<br /><br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;recover&nbsp;from&nbsp;mysql_dump_sql_file</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">def</span>&nbsp;recoverMysqlFromDumpfile(dbName):<br />&nbsp;&nbsp;&nbsp;&nbsp;dbFile&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}.sql</span><span style="color: #800000; ">"</span>.format(save_dir,&nbsp;dbName)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;os.path.exists(dbFile):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">recoverMysqlFromDumpfile,but&nbsp;not&nbsp;find&nbsp;file:{0}</span><span style="color: #800000; ">"</span>.format(dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(-1)<br />&nbsp;&nbsp;&nbsp;&nbsp;cmdStr&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">{0}&nbsp;-h{1}&nbsp;-u{2}&nbsp;-p{3}&nbsp;-e&nbsp;"source&nbsp;{4}"</span><span style="color: #800000; ">'</span>.format(mysql,&nbsp;mysql_host,&nbsp;mysql_user,&nbsp;mysql_pwd,&nbsp;dbFile)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">------------------recoverMysqlFromDumpfile---------------</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;cmdStr<br />&nbsp;&nbsp;&nbsp;&nbsp;pause()<br />&nbsp;&nbsp;&nbsp;&nbsp;t1&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;os.system(cmdStr)<br />&nbsp;&nbsp;&nbsp;&nbsp;t2&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;t3&nbsp;=&nbsp;t2&nbsp;-&nbsp;t1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">recoverMysqlFromDumpfile&nbsp;cmd:{0}&nbsp;result:{1}&nbsp;useTime:{2}</span><span style="color: #800000; ">"</span>.format(cmdStr,&nbsp;result,&nbsp;t3)<br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;dumpMysqlDB():<br />&nbsp;&nbsp;&nbsp;&nbsp;dumpDatabaseOnlyStruct(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_msg_record</span><span style="color: #800000; ">"</span>,8)<br />&nbsp;&nbsp;&nbsp;&nbsp;dumpDatabaseOnlyStruct(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_user_msg</span><span style="color: #800000; ">"</span>,&nbsp;4)<br />&nbsp;&nbsp;&nbsp;&nbsp;dumpDatabaseOnlyStruct(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_group</span><span style="color: #800000; ">"</span>,&nbsp;8)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">dumpDatabaseStructAndData("db_im_msg_record",8)</span><span style="color: #008000; "><br /></span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;recoverMysqlDB():<br />&nbsp;&nbsp;&nbsp;&nbsp;recoverMysqlFromDumpfile(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_msg_record</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;recoverMysqlFromDumpfile(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_user_msg</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;recoverMysqlFromDumpfile(<span style="color: #800000; ">"</span><span style="color: #800000; ">db_im_group</span><span style="color: #800000; ">"</span>)<br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">-------begin--------</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;mkdir(save_dir)<br />&nbsp;&nbsp;&nbsp;&nbsp;dumpMysqlDB()<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;recoverMysqlDB()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">-------done---------</span><span style="color: #800000; ">"</span></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/214052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-07-27 10:19 <a href="http://www.cppblog.com/changshoumeng/archive/2016/07/27/214052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python实现的LAN文件传输服务</title><link>http://www.cppblog.com/changshoumeng/archive/2016/06/19/213755.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Sun, 19 Jun 2016 03:20:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/06/19/213755.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/213755.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/06/19/213755.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/213755.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/213755.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">Give&nbsp;wisdom&nbsp;to&nbsp;the&nbsp;machine,By&nbsp;ChangShouMeng\</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">定义传输的上下文，client与server通用的上下文</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;time<br /><span style="color: #0000FF; ">import</span>&nbsp;os,sys,traceback<br /><br /><span style="color: #0000FF; ">class</span>&nbsp;FileTransferContext(object):<br />&nbsp;&nbsp;&nbsp;&nbsp;TRANSFER_TYPE_SEND=0<br />&nbsp;&nbsp;&nbsp;&nbsp;TRANSFER_TYPE_RECV=1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferType=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.filePath&nbsp;=&nbsp;<span style="color: #800000; ">""</span>&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;absolute&nbsp;path,send</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileTotalSize&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileChunkSize=1024<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.contextName=<span style="color: #800000; ">"</span><span style="color: #800000; ">-</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileBaseName=<span style="color: #800000; ">""</span><span style="color: #008000; ">#</span><span style="color: #008000; ">only&nbsp;filename,recv</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle&nbsp;=&nbsp;None<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferedSize=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferMsgId&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferSeqNum&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferSeqNumUpLimit&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferSeqChunkSize&nbsp;=&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferBeginTime&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tmpdir=<span style="color: #800000; ">"</span><span style="color: #800000; ">temp</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.workStatus=0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__del__</span>(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.finiTransInfo()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;initTransferInfo(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">---begin----init&nbsp;transfer&nbsp;info</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;&nbsp;self.transferType==&nbsp;FileTransferContext.TRANSFER_TYPE_SEND:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.contextName=<span style="color: #800000; ">"</span><span style="color: #800000; ">snd&gt;&gt;</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileTotalSize&nbsp;=&nbsp;os.path.getsize(self.filePath)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileBaseName&nbsp;=&nbsp;os.path.basename(self.filePath)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle=open(self.filePath,<span style="color: #800000; ">'</span><span style="color: #800000; ">rb</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.contextName=<span style="color: #800000; ">"</span><span style="color: #800000; ">rcv&lt;&lt;</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp_fn&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}_tmp</span><span style="color: #800000; ">"</span>.format(self.tmpdir,&nbsp;self.fileBaseName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle=open(tmp_fn,<span style="color: #800000; ">'</span><span style="color: #800000; ">wb</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;tmp_fn<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">assert</span>&nbsp;self.fileHandle<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferBeginTime=&nbsp;(int)(time.time())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferedSize=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferSeqNumUpLimit=self.fileTotalSize/self.fileChunkSize&nbsp;+&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.workStatus=1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">initTransferInfo&nbsp;{0}&nbsp;fileName:{1}&nbsp;fileSize:{2}</span><span style="color: #800000; ">"</span>.format(self.contextName,self.fileBaseName,self.fileTotalSize)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;True<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">initTransferinfo&nbsp;failed:</span><span style="color: #800000; ">"</span>,traceback.print_exc()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">init&nbsp;filepath&nbsp;is:</span><span style="color: #800000; ">"</span>,self.filePath<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;False<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;&nbsp;finiTransInfo(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;self.fileHandle:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.transferType&nbsp;==&nbsp;FileTransferContext.TRANSFER_TYPE_RECV:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.flush()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.close()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle=None<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">finiTransInfo&nbsp;failed:</span><span style="color: #800000; ">"</span>,&nbsp;traceback.print_exc()<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;traceTransferInfo(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.transferedSize&nbsp;==&nbsp;self.fileTotalSize:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.workStatus=2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.transferSeqNum&nbsp;&gt;&nbsp;5&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;(self.transferSeqNum&nbsp;%&nbsp;self.transferSeqChunkSize)&nbsp;!=&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useTime&nbsp;&nbsp;=&nbsp;int(time.time())&nbsp;-&nbsp;self.transferBeginTime<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speed&nbsp;=&nbsp;<span style="color: #800000; ">""</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progress&nbsp;=&nbsp;float(self.transferedSize)&nbsp;/&nbsp;float(self.fileTotalSize)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;useTime&nbsp;&gt;&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speedint&nbsp;=&nbsp;float(self.transferedSize)&nbsp;/&nbsp;float(useTime&nbsp;*&nbsp;1024)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;speedint&nbsp;&gt;=&nbsp;1024:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speedint=&nbsp;&nbsp;float(speedint)/&nbsp;float(1024)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speed=<span style="color: #800000; ">"</span><span style="color: #800000; ">{:.2f}mb/s</span><span style="color: #800000; ">"</span>.format(speedint)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speed=<span style="color: #800000; ">"</span><span style="color: #800000; ">{:.2f}kb/s</span><span style="color: #800000; ">"</span>.format(speedint)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}msgid:{1}&nbsp;total:{2}byte&nbsp;tranfered:{3}byte&nbsp;speed:{4}&nbsp;progress:{5:.2f}&nbsp;use-time:{6}s</span><span style="color: #800000; ">"</span>.format(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.contextName,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferMsgId,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileTotalSize,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferedSize,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;speed,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;progress,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;useTime)<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;readBuffer(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;self.fileHandle.read(self.fileChunkSize)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">readBuffer&nbsp;err:</span><span style="color: #800000; ">"</span>,traceback.print_exc()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">""</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;writeBuffer(self,buffer):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.write(buffer)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(self.transferSeqNum&nbsp;%&nbsp;self.transferSeqChunkSize)&nbsp;==&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.flush()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.transferedSize&nbsp;+=&nbsp;len(buffer)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;self.transferedSize,self.fileTotalSize</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.transferedSize&nbsp;==&nbsp;self.fileTotalSize:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.flush()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle.close()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.fileHandle=None<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp_fn&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}_tmp</span><span style="color: #800000; ">"</span>.format(self.tmpdir,&nbsp;self.fileBaseName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;real_fn&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/{1}</span><span style="color: #800000; ">"</span>.format(self.tmpdir,&nbsp;self.fileBaseName)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">-</span><span style="color: #800000; ">"</span>*80<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">tmp_fn:</span><span style="color: #800000; ">"</span>,tmp_fn<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">real_fn:</span><span style="color: #800000; ">"</span>,real_fn<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;os.path.exists(real_fn):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(real_fn)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.rename(tmp_fn,real_fn)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.workStatus=2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">writeBuffer&nbsp;err:</span><span style="color: #800000; ">"</span>,traceback.print_exc()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;isFinished(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.workStatus&nbsp;&lt;=&nbsp;1:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;False<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;True<br /></div>--<br /><br />代码下载： &nbsp;https://github.com/changshoumeng/python_local-network_file-transfer-service<br />--<br /><br /><br /><br />--<img src ="http://www.cppblog.com/changshoumeng/aggbug/213755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-06-19 11:20 <a href="http://www.cppblog.com/changshoumeng/archive/2016/06/19/213755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>破解某城市的验证</title><link>http://www.cppblog.com/changshoumeng/archive/2016/06/14/213710.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Tue, 14 Jun 2016 12:35:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/06/14/213710.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/213710.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/06/14/213710.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/213710.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/213710.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">zhangtao&nbsp;2016/06/14</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">QQ&nbsp;406878851</span><span style="color: #008000; "><br /></span><br /><span style="color: #0000FF; ">from</span>&nbsp;PIL&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br /><span style="color: #0000FF; ">import</span>&nbsp;&nbsp;Image<br /><span style="color: #0000FF; ">import</span>&nbsp;numpy&nbsp;as&nbsp;np<br /><span style="color: #0000FF; ">import</span>&nbsp;os<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">#######################################################################################</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">#######################################################################################</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">class</span>&nbsp;PixHelper(object):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self&nbsp;,(r&nbsp;,g&nbsp;,b)):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.&nbsp;r&nbsp;=r<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.&nbsp;g&nbsp;=g<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.&nbsp;b&nbsp;=b<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;grayVal(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(self.r&nbsp;*&nbsp;30&nbsp;+self.g&nbsp;*&nbsp;59&nbsp;+&nbsp;self.b&nbsp;*&nbsp;11)&nbsp;/&nbsp;100<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;validPix(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.isBackgroundPix():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.grayVal()&nbsp;!=&nbsp;255:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;self.grayVal()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;255<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;isBackgroundPix(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background&nbsp;=&nbsp;PixHelper((150,&nbsp;150,&nbsp;150))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;background_grayVal&nbsp;=&nbsp;background.grayVal()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;self.grayVal()&nbsp;&gt;&nbsp;background_grayVal<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;isNeetPix(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;False&nbsp;==&nbsp;self.isBackgroundPix()<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">#######################################################################################</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">#######################################################################################</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">class</span>&nbsp;ImageHelper(object):<br />&nbsp;&nbsp;&nbsp;&nbsp;model_file=<span style="color: #800000; ">"</span><span style="color: #800000; ">svm.model</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self,&nbsp;image):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.image&nbsp;=&nbsp;image<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.width&nbsp;=&nbsp;image.size[0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.height&nbsp;=&nbsp;image.size[1]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.subWidth=16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.subHeight=self.height<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">二值图</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;convertGrayImage(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;x&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(self.width):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;y&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(self.height):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pix&nbsp;=&nbsp;self.image.getpixel((x,&nbsp;y))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixhelper&nbsp;=&nbsp;PixHelper(pix)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pix2&nbsp;=&nbsp;pixhelper.validPix()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.image.putpixel((x,&nbsp;y),&nbsp;(pix2,&nbsp;pix2,&nbsp;pix2))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;fixCropSubImages(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box0&nbsp;=&nbsp;(7,&nbsp;0,&nbsp;20,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box1&nbsp;=&nbsp;(20,&nbsp;0,&nbsp;34,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box2&nbsp;=&nbsp;(34,&nbsp;0,&nbsp;46,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box3&nbsp;=&nbsp;(46,&nbsp;0,&nbsp;59,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box4&nbsp;=&nbsp;(59,&nbsp;0,&nbsp;72,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box5&nbsp;=&nbsp;(72,&nbsp;0,&nbsp;88,&nbsp;self.height)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boxList.append(box5)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subList&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;box&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;boxList:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;=&nbsp;self.image.crop(box)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subList.append(sub)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;subList<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;getRect(self,block):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minx&nbsp;=&nbsp;self.width<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxx&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;miny&nbsp;=&nbsp;self.height<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxy&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;p&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;block:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;p</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minx&nbsp;=&nbsp;min(minx,&nbsp;p[0])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxx&nbsp;=&nbsp;max(maxx,&nbsp;p[0])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;miny&nbsp;=&nbsp;min(miny,&nbsp;p[1])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxy&nbsp;=&nbsp;max(maxy,&nbsp;p[1])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(minx,&nbsp;miny,&nbsp;maxx&nbsp;-&nbsp;minx&nbsp;+&nbsp;1,&nbsp;maxy&nbsp;-&nbsp;miny&nbsp;+&nbsp;1)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;getValidPoints(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points&nbsp;=&nbsp;list()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;x&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(self.width):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;y&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(self.height):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;(x,&nbsp;y)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pix&nbsp;=&nbsp;self.image.getpixel(p)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixhelper&nbsp;=&nbsp;PixHelper(pix)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;pixhelper.isNeetPix():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points.append(p)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;points<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;getDataListWithOffset(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points&nbsp;=&nbsp;self.getValidPoints()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(left,&nbsp;top,&nbsp;width,&nbsp;height)&nbsp;=&nbsp;self.getRect(points)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList&nbsp;=&nbsp;list()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;if&nbsp;1&nbsp;==&nbsp;0:</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;self.getData()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList.append(data)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dataList</span><span style="color: #008000; "><br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xBegin&nbsp;=&nbsp;0&nbsp;-&nbsp;left<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xEnd&nbsp;=&nbsp;self.subWidth&nbsp;-&nbsp;(left&nbsp;+&nbsp;width)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yBegin&nbsp;=&nbsp;0&nbsp;-&nbsp;top<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yEnd&nbsp;=&nbsp;self.subHeight&nbsp;-&nbsp;(top&nbsp;+&nbsp;height)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h_i&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w_i&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;"######################"</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;h_i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(yBegin,&nbsp;yEnd,&nbsp;1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;w_i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(xBegin,&nbsp;xEnd,&nbsp;1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;[0]&nbsp;*&nbsp;(self.subWidth&nbsp;*&nbsp;self.subHeight)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;p&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;points:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x,&nbsp;y)&nbsp;=&nbsp;p<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x2,&nbsp;y2)&nbsp;=&nbsp;(x&nbsp;+&nbsp;w_i,&nbsp;y&nbsp;+&nbsp;h_i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;x2&nbsp;&gt;=&nbsp;self.subWidth&nbsp;&nbsp;<span style="color: #0000FF; ">or</span>&nbsp;y2&nbsp;&gt;=&nbsp;self.subHeight:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">continue</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;=&nbsp;x2&nbsp;+&nbsp;y2&nbsp;*&nbsp;self.subWidth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[idx]&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList.append(data)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;dataList<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;getData(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;points&nbsp;=&nbsp;self.getValidPoints()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(left,&nbsp;top,&nbsp;width,&nbsp;height)&nbsp;=&nbsp;self.getRect(points)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;[0]&nbsp;*&nbsp;(self.subWidth&nbsp;*&nbsp;self.subHeight)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;p&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;points:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(x,&nbsp;y)&nbsp;=&nbsp;p<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;=&nbsp;x&nbsp;+&nbsp;y&nbsp;*&nbsp;self.subWidth<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[idx]&nbsp;=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;data</div><br />----<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">zhangtao&nbsp;2016/06/14</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">QQ&nbsp;406878851</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;numpy&nbsp;as&nbsp;np<br /><span style="color: #0000FF; ">import</span>&nbsp;mlpy<br /><span style="color: #0000FF; ">import</span>&nbsp;sys<br /><span style="color: #0000FF; ">import</span>&nbsp;time<br /><span style="color: #0000FF; ">from</span>&nbsp;PIL&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;Image<br /><span style="color: #0000FF; ">from</span>&nbsp;ImageHelper&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br /><span style="color: #0000FF; ">from</span>&nbsp;common&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;checkSampleSucc(train_label,&nbsp;test_result):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(train_label)&nbsp;!=&nbsp;len(test_result):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">checkSampleSucc&nbsp;shape&nbsp;no&nbsp;match</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;total&nbsp;=&nbsp;len(train_label)<br />&nbsp;&nbsp;&nbsp;&nbsp;succ&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(total):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item1&nbsp;=&nbsp;test_result[i]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item2&nbsp;=&nbsp;train_label[i]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;int(item1)&nbsp;==&nbsp;int(item2):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;succ&nbsp;+=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;succRate&nbsp;=&nbsp;float(succ)&nbsp;/&nbsp;float(total)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">checkSampleSucc&nbsp;:&nbsp;</span><span style="color: #800000; ">"</span>,&nbsp;(succ,&nbsp;total),&nbsp;succRate<br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;getDataListFromFile(srcfilepath):<br />&nbsp;&nbsp;&nbsp;&nbsp;im&nbsp;=&nbsp;Image.open(srcfilepath).convert(<span style="color: #800000; ">'</span><span style="color: #800000; ">RGB</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;helper&nbsp;=&nbsp;ImageHelper(im)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;helper.getDataListWithOffset()<br /><br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;loadSampleFromDir(label,&nbsp;srcdir,&nbsp;x,&nbsp;y):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">load&nbsp;..</span><span style="color: #800000; ">"</span>,&nbsp;srcdir<br />&nbsp;&nbsp;&nbsp;&nbsp;srcfiles&nbsp;=&nbsp;os.listdir(srcdir)<br />&nbsp;&nbsp;&nbsp;&nbsp;tm&nbsp;=&nbsp;int(time.time())<br />&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;srcfilename&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;srcfiles:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcfilepath&nbsp;=&nbsp;os.path.join(srcdir,&nbsp;srcfilename)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;srcfilename[0]&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">a</span><span style="color: #800000; ">'</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;continue</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;srcfilename</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList&nbsp;=&nbsp;getDataListFromFile(srcfilepath)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;dataList:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x.append(data)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y.append(label)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;createImageFromData(srcdir,data,idx)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;+=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newfilename&nbsp;=&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}\\{1}.png</span><span style="color: #800000; ">"</span>.format(srcdir,&nbsp;k&nbsp;+&nbsp;tm)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.rename(srcfilepath,newfilename)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;+=&nbsp;1<br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;loadSampleFiles():<br />&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;[]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;label_count&nbsp;=&nbsp;0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;c&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(ord(<span style="color: #800000; ">'</span><span style="color: #800000; ">a</span><span style="color: #800000; ">'</span>),&nbsp;ord(<span style="color: #800000; ">'</span><span style="color: #800000; ">z</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;1,&nbsp;1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;c&nbsp;==&nbsp;ord(<span style="color: #800000; ">'</span><span style="color: #800000; ">i</span><span style="color: #800000; ">'</span>):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">continue</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcdir&nbsp;=&nbsp;r<span style="color: #800000; ">'</span><span style="color: #800000; ">sample\{0}</span><span style="color: #800000; ">'</span>.format(chr(c))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">mkdir(srcdir)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadSampleFromDir(c,&nbsp;srcdir,&nbsp;x,&nbsp;y)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label_count&nbsp;+=&nbsp;1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(1,10,1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcdir=r<span style="color: #800000; ">'</span><span style="color: #800000; ">sample\{0}</span><span style="color: #800000; ">'</span>.format(&nbsp;&nbsp;i&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">mkdir(srcdir)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadSampleFromDir(i,srcdir,x,y)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label_count&nbsp;+=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">label_count:</span><span style="color: #800000; ">"</span>,label_count<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(x,&nbsp;y)<br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;train():<br />&nbsp;&nbsp;&nbsp;&nbsp;(x,&nbsp;y)&nbsp;=&nbsp;loadSampleFiles()<br />&nbsp;&nbsp;&nbsp;&nbsp;train_data&nbsp;=&nbsp;np.array(x,&nbsp;dtype=<span style="color: #800000; ">'</span><span style="color: #800000; ">float32</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;train_label&nbsp;=&nbsp;np.array(y,&nbsp;dtype=<span style="color: #800000; ">'</span><span style="color: #800000; ">int32</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;svm&nbsp;=&nbsp;mlpy.LibSvm(svm_type=<span style="color: #800000; ">'</span><span style="color: #800000; ">c_svc</span><span style="color: #800000; ">'</span>,&nbsp;kernel_type=<span style="color: #800000; ">'</span><span style="color: #800000; ">poly</span><span style="color: #800000; ">'</span>,&nbsp;gamma=10,&nbsp;probability=True)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">svm&nbsp;learn&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />.</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">len(x):</span><span style="color: #800000; ">"</span>,len(x)<br />&nbsp;&nbsp;&nbsp;&nbsp;svm.learn(train_data,&nbsp;train_label)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">svm&nbsp;learn&nbsp;done!</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;svm.pred(train_data)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;result<br />&nbsp;&nbsp;&nbsp;&nbsp;checkSampleSucc(y,&nbsp;result)<br />&nbsp;&nbsp;&nbsp;&nbsp;svm.save_model(ImageHelper.model_file)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;result</span><span style="color: #008000; "><br /></span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;train()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">test()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;time.time()<br />&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;=&nbsp;end&nbsp;-&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">done:</span><span style="color: #800000; ">"</span>,&nbsp;t,&nbsp;t&nbsp;/&nbsp;(60)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;test2()</span><span style="color: #008000; "><br /></span><br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;&nbsp;<span style="color: #800080; ">__file__</span><br />&nbsp;&nbsp;&nbsp;&nbsp;main()<br /><br /></div>----<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">zhangtao&nbsp;2016/06/14</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">QQ&nbsp;406878851</span><span style="color: #008000; "><br /></span><br /><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;numpy&nbsp;as&nbsp;np<br /><span style="color: #0000FF; ">import</span>&nbsp;mlpy<br /><span style="color: #0000FF; ">import</span>&nbsp;sys<br /><span style="color: #0000FF; ">import</span>&nbsp;time<br /><span style="color: #0000FF; ">from</span>&nbsp;PIL&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;Image<br /><span style="color: #0000FF; ">from</span>&nbsp;ImageHelper&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br /><span style="color: #0000FF; ">from</span>&nbsp;common&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br /><br />testDir=<span style="color: #800000; ">"</span><span style="color: #800000; ">test</span><span style="color: #800000; ">"</span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;processOne(i):<br />&nbsp;&nbsp;&nbsp;&nbsp;dataList=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;fn=r<span style="color: #800000; ">'</span><span style="color: #800000; ">img/{0}.jpg</span><span style="color: #800000; ">'</span>.format(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;fn2=r<span style="color: #800000; ">'</span><span style="color: #800000; ">img2/{0}.bmp</span><span style="color: #800000; ">'</span>.format(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;im&nbsp;=&nbsp;Image.open(fn)<br />&nbsp;&nbsp;&nbsp;&nbsp;helper&nbsp;=&nbsp;ImageHelper(im)<br />&nbsp;&nbsp;&nbsp;&nbsp;helper.convertGrayImage()<br />&nbsp;&nbsp;&nbsp;&nbsp;im.save(fn2)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;subList=helper.fixCropSubImages()<br />&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;len(subList)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;j&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(count):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn3=r<span style="color: #800000; ">'</span><span style="color: #800000; ">img3/{0}_{1}.bmp</span><span style="color: #800000; ">'</span>.format(i,j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;=&nbsp;subList[j]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sub.save(fn3)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subHelper=ImageHelper(sub)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data=subHelper.getData()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList.append(data)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;dataList<br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;savePredictResult(result_list):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;testDir<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">savePredictResult</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;count=len(result_list)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;count&nbsp;&gt;&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(<span style="color: #800000; ">"</span><span style="color: #800000; ">data.txt</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">w</span><span style="color: #800000; ">'</span>)&nbsp;as&nbsp;file:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(0,count,1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item=result_list[i]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(str(i)+<span style="color: #800000; ">"</span><span style="color: #800000; ">:</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(item)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(<span style="color: #800000; ">"</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;i,&nbsp;item</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;lines1=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;lines2=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(<span style="color: #800000; ">"</span><span style="color: #800000; ">data.txt</span><span style="color: #800000; ">"</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">r</span><span style="color: #800000; ">'</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines1=f.readlines()<br />&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(r<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}/data.txt</span><span style="color: #800000; ">"</span>.format(testDir),<span style="color: #800000; ">'</span><span style="color: #800000; ">r</span><span style="color: #800000; ">'</span>)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines2=f.readlines()<br />&nbsp;&nbsp;&nbsp;&nbsp;count1=len(lines1)<br />&nbsp;&nbsp;&nbsp;&nbsp;count2=len(lines2)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;count1&nbsp;!=&nbsp;count2&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">no&nbsp;match&nbsp;:</span><span style="color: #800000; ">"</span>,count1,count2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;succ=0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(count1):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line1=lines1[i].strip()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line2=lines2[i].strip()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;line1&nbsp;!=&nbsp;line2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">!=</span><span style="color: #800000; ">"</span>,line1,line2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;succ&nbsp;+=&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;rate=&nbsp;float(succ)/float(count1)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">result:</span><span style="color: #800000; ">"</span>,(succ,count1),rate<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">-----------test---------------------</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;False&nbsp;==&nbsp;os.path.exists(ImageHelper.model_file):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">s.path.exists&nbsp;,faild&nbsp;</span><span style="color: #800000; ">"</span>,&nbsp;ImageHelper.model_file<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;svm&nbsp;=&nbsp;mlpy.LibSvm.load_model(ImageHelper.model_file)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;'nclasses:',&nbsp;svm.nclasses()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;'labels:',&nbsp;svm.labels()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;test_list=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(100):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList=processOne(i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;dataList:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input_data&nbsp;=&nbsp;np.array(data,&nbsp;dtype=<span style="color: #800000; ">'</span><span style="color: #800000; ">float32</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_label&nbsp;=&nbsp;int(svm.pred(input_data))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;labels.append(result_label)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_string=parseLabels(labels)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">{0}:{1}</span><span style="color: #800000; ">"</span>.format(i,result_string)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_list.append(result_string)<br />&nbsp;&nbsp;&nbsp;&nbsp;savePredictResult(test_list)<br /><br /><br /><span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>&nbsp;==&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;&nbsp;<span style="color: #800080; ">__file__</span><br />&nbsp;&nbsp;&nbsp;&nbsp;main()<br /></div>---<br />---<img src="http://www.cppblog.com/images/cppblog_com/changshoumeng/0.jpg" border="0" alt="" />&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/changshoumeng/2.jpg" border="0" alt="" /><img src ="http://www.cppblog.com/changshoumeng/aggbug/213710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-06-14 20:35 <a href="http://www.cppblog.com/changshoumeng/archive/2016/06/14/213710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python AES  PKCS7填充 加解密</title><link>http://www.cppblog.com/changshoumeng/archive/2016/05/16/213523.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 16 May 2016 06:18:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/05/16/213523.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/213523.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/05/16/213523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/213523.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/213523.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">coding:&nbsp;utf8</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;sys<br /><span style="color: #0000FF; ">from</span>&nbsp;Crypto.Cipher&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;AES<br /><span style="color: #0000FF; ">from</span>&nbsp;binascii&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;b2a_hex,&nbsp;a2b_hex<br /><span style="color: #0000FF; ">import</span>&nbsp;base64<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;printMemLog2(mem):&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;byteData=bytearray(mem)<br />&nbsp;&nbsp;&nbsp;&nbsp;byteLen&nbsp;=len(byteData)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">printMemLog&nbsp;begin&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><img src="http://www.cppblog.com/Images/dot.gif"  alt="" />.byteLen:{0}</span><span style="color: #800000; ">"</span>.format(byteLen)<br />&nbsp;&nbsp;&nbsp;&nbsp;i=0<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;i&nbsp;&lt;=byteLen-1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=byteData[i]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i&nbsp;==&nbsp;byteLen-1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">%02x&nbsp;</span><span style="color: #800000; ">"</span>%(&nbsp;a&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;+=1&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b=byteData[i]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">%02x%02x&nbsp;</span><span style="color: #800000; ">"</span>%(&nbsp;a,b),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;+=1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i%64&nbsp;==&nbsp;0&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">*</span><span style="color: #800000; ">"</span>*10&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">将text按照byteAlignLen字节对齐，如果不对齐，按照差数填充</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">def</span>&nbsp;bytePad(text,byteAlignLen=16):&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;count=len(text)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;mod_num=count%byteAlignLen<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;&nbsp;mod_num==0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;add_num=byteAlignLen-mod_num<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">bytePad:</span><span style="color: #800000; ">"</span>&nbsp;,add_num&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text+chr(add_num)*add_num&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;byteUnpad(text,byteAlignLen=16):<br />&nbsp;&nbsp;&nbsp;&nbsp;count=len(text)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">byteUnpad:</span><span style="color: #800000; ">"</span>,count<br />&nbsp;&nbsp;&nbsp;&nbsp;mod_num=count%byteAlignLen<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">assert</span>&nbsp;mod_num==0<br />&nbsp;&nbsp;&nbsp;&nbsp;lastChar=text[-1]&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;lastLen=ord(lastChar)<br />&nbsp;&nbsp;&nbsp;&nbsp;lastChunk=text[-lastLen:]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;lastChunk==chr(lastLen)*lastLen:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;"byteUnpad"</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text[:-lastLen]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br /><br />&nbsp;<br /><span style="color: #0000FF; ">class</span>&nbsp;prpcrypt():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self,&nbsp;key):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.key&nbsp;=&nbsp;key<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.mode&nbsp;=&nbsp;AES.MODE_ECB<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.iv&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\0</span><span style="color: #800000; ">'</span>&nbsp;*&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">加密函数，如果text不是16的倍数【加密文本text必须为16的倍数！】，那就补足为16的倍数</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;encrypt(self,&nbsp;text):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptor&nbsp;=&nbsp;AES.new(self.key,&nbsp;self.mode,&nbsp;self.iv&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">这里密钥key&nbsp;长度必须为16（AES-128）、24（AES-192）、或32（AES-256）Bytes&nbsp;长度.目前AES-128足够用</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">length&nbsp;=&nbsp;16</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text=bytePad(text,16)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">add&nbsp;=&nbsp;length&nbsp;-&nbsp;(count&nbsp;%&nbsp;length)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">text&nbsp;=&nbsp;text&nbsp;+&nbsp;('\0'&nbsp;*&nbsp;add)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ciphertext&nbsp;=&nbsp;cryptor.encrypt(text)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">因为AES加密时候得到的字符串不一定是ascii字符集的，输出到终端或者保存时候可能存在问题</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">所以这里统一把加密后的字符串转化为16进制字符串</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;self.ciphertext<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">return&nbsp;b2a_hex(self.ciphertext)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">解密后，去掉补足的空格用strip()&nbsp;去掉</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;decrypt(self,&nbsp;text):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cryptor&nbsp;=&nbsp;AES.new(self.key,&nbsp;self.mode,&nbsp;self.iv&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">plain_text&nbsp;=&nbsp;cryptor.decrypt(a2b_hex(text))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plain_text&nbsp;=&nbsp;cryptor.decrypt(text)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">printMemLog2(plain_text)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;plain_text</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;byteUnpad(plain_text)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/213523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-05-16 14:18 <a href="http://www.cppblog.com/changshoumeng/archive/2016/05/16/213523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过分析日志文件，对比redis的数据，更新redis的数据</title><link>http://www.cppblog.com/changshoumeng/archive/2016/04/18/213304.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 18 Apr 2016 08:13:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2016/04/18/213304.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/213304.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2016/04/18/213304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/213304.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/213304.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">-*-coding:utf-8-*-&nbsp;</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">20160418&nbsp;&nbsp;通过分析日志文件，对比redis的数据，更新redis的数据</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;redis<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;sys&nbsp;&nbsp;&nbsp;&nbsp;<br />reload(sys)&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />sys.setdefaultencoding(<span style="color: #800000; ">'</span><span style="color: #800000; ">utf-8</span><span style="color: #800000; ">'</span>)<br /><br />r=None<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;byRedis(groupId,msgId):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">global</span>&nbsp;r<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;r==None:<br />&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;=&nbsp;redis.Redis(host=<span style="color: #800000; ">'</span><span style="color: #800000; ">192.168.1.227</span><span style="color: #800000; ">'</span>,port=6382,db=0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">--------------------------------------&gt;redis</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;r.ping()&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">cannot&nbsp;ping&nbsp;redis</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;key=&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">groupmsgcounter_{0}</span><span style="color: #800000; ">'</span>.format(groupId)<br />&nbsp;&nbsp;&nbsp;&nbsp;oldmsgId=r.get(&nbsp;key&nbsp;&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;oldmsgId&nbsp;==&nbsp;None:<br />&nbsp;&nbsp;&nbsp;&nbsp;oldmsgId=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;"redis&nbsp;error:",key,oldmsgId,msgId</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;oldmsgId=long(oldmsgId)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;"redis:",key,oldmsgId,msgId</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;oldmsgId&nbsp;&lt;&nbsp;msgId:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">less:</span><span style="color: #800000; ">"</span>,key,oldmsgId,msgId<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;newmsgId=max(msgId,oldmsgId&nbsp;)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;newmsgId&nbsp;==&nbsp;0&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;newmsgId<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">r.set(key,newmsgId)</span><span style="color: #008000; "><br /></span><br /><br /><br /><span style="color: #800000; ">'''</span><span style="color: #800000; "><br />&nbsp;cli-groupmsgid:124&nbsp;svr-groupmsgid:124<br />&nbsp;groupid:72057594037938371<br /></span><span style="color: #800000; ">'''</span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;parse1(lineData):<br />&nbsp;&nbsp;&nbsp;&nbsp;flag1=<span style="color: #800000; ">'</span><span style="color: #800000; ">cli-groupmsgid:</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;flag2=<span style="color: #800000; ">'</span><span style="color: #800000; ">svr-groupmsgid:</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;flag3=<span style="color: #800000; ">'</span><span style="color: #800000; ">lpContext:</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;flag4=<span style="color: #800000; ">'</span><span style="color: #800000; ">groupid:</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;flag5=<span style="color: #800000; ">'</span><span style="color: #800000; ">grouprealid:</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;s=lineData<br />&nbsp;&nbsp;&nbsp;&nbsp;n1=s.find(flag1)<br />&nbsp;&nbsp;&nbsp;&nbsp;n2=s.find(flag2)<br />&nbsp;&nbsp;&nbsp;&nbsp;n3=s.find(flag3)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;n4=s.find(flag4)<br />&nbsp;&nbsp;&nbsp;&nbsp;n5=s.find(flag5)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;print&nbsp;lineData</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;a=s[n1+len(flag1):n2]<br />&nbsp;&nbsp;&nbsp;&nbsp;b=s[n2++len(flag2):n3]<br />&nbsp;&nbsp;&nbsp;&nbsp;c=s[n4+len(flag4):n5]<br />&nbsp;&nbsp;&nbsp;&nbsp;a=long(a)<br />&nbsp;&nbsp;&nbsp;&nbsp;b=long(b)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;c=long&nbsp;(c)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;(c,max(a,b))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;n1,n2,n3</span><span style="color: #008000; "><br /></span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;paseFile(fileName):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result=dict()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;open(fileName)&nbsp;&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines=f.readlines()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;lines:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lineData=line.strip()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(groupId,msgId)&nbsp;=&nbsp;&nbsp;parse1(lineData)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgId2=msgId<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;groupId&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;result:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgId2=max(result[groupId],msgId)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[groupId]=msgId2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;break</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;result&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;testTwoDict(&nbsp;result1,result2):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(d,x)&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;result1.items():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgId=x<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;d&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;result2:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;msgId&nbsp;&lt;&nbsp;result2[d]&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msgId=result2[d]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;"find:",d,x,msgId</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byRedis(d,msgId)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result1=paseFile(<span style="color: #800000; ">"</span><span style="color: #800000; ">test1.txt</span><span style="color: #800000; ">"</span>)&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result2=paseFile(<span style="color: #800000; ">"</span><span style="color: #800000; ">test2.txt</span><span style="color: #800000; ">"</span>)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result3=dict()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testTwoDict(&nbsp;result1,result2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testTwoDict(&nbsp;result2,result1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />main()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/213304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2016-04-18 16:13 <a href="http://www.cppblog.com/changshoumeng/archive/2016/04/18/213304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定时刷新页面，比如定时拉取你所关注的股票行情</title><link>http://www.cppblog.com/changshoumeng/archive/2015/07/29/211406.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Wed, 29 Jul 2015 07:54:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2015/07/29/211406.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/211406.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2015/07/29/211406.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/211406.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/211406.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;?php<br />&nbsp;&nbsp;&nbsp;<span style="color: #800080; ">$content</span>&nbsp;=&nbsp;<span style="color: #008080; ">file_get_contents</span>('http://www.baidu.com/s?wd=zhongguoyihang&amp;cl=3');<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">shangzhengzhishu<br />&nbsp;&nbsp;&nbsp;//zhongguoyinhang</span><span style="color: #008000; "><br /></span>?&gt;<br />&lt;!DOCTYPE&nbsp;html&gt;<br />&lt;html&gt;<br />&lt;head&nbsp;lang="en"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset="UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;content="text/html;&nbsp;charset=utf-8"&nbsp;http-equiv="Content-Type"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;content="no-cache,must-revalidate"&nbsp;http-equiv="Cache-Control"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;content="no-cache"&nbsp;http-equiv="pragma"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;content="0"&nbsp;http-equiv="expires"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;zthome&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type="text/javascript"&nbsp;&nbsp;src="resources/jquery/jquery-2.1.4.min.js"&gt;&lt;/script&gt;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(document).ready(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$("#date").text((<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #008080; ">Date</span>()).toString());&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setInterval("startRequest()",3000);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;startRequest()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.reload();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;style&nbsp;type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">gupiao&nbsp;{&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width&nbsp;:200px;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&lt;/style&gt;<br /><br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;div&nbsp;id="date"&gt;<br />&lt;/div&gt;<br />&lt;div&nbsp;id="gupiao"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;?php&nbsp;<span style="color: #0000FF; ">echo</span>&nbsp;<span style="color: #800080; ">$content</span>&nbsp;;&nbsp;?&gt;<br />&lt;/div&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/211406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2015-07-29 15:54 <a href="http://www.cppblog.com/changshoumeng/archive/2015/07/29/211406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抓取QQ空间里某个号码的日志，python的乱码是个问题啊</title><link>http://www.cppblog.com/changshoumeng/archive/2015/07/16/211279.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 16 Jul 2015 13:49:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2015/07/16/211279.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/211279.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2015/07/16/211279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/211279.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/211279.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br /></span><br /><br /><br /><span style="color: #0000FF; ">from</span>&nbsp;HttpRequestModule&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*&nbsp;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;os<br /><span style="color: #0000FF; ">import</span>&nbsp;json<br /><span style="color: #0000FF; ">import</span>&nbsp;traceback<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;codecs<br /><span style="color: #0000FF; ">from</span>&nbsp;lxml&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;etree<br /><span style="color: #0000FF; ">import</span>&nbsp;StringIO,&nbsp;gzip&nbsp;<br /><span style="color: #0000FF; ">import</span>&nbsp;sys<br />reload(sys)<br />sys.setdefaultencoding(<span style="color: #800000; ">'</span><span style="color: #800000; ">utf-8</span><span style="color: #800000; ">'</span>)<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;write_file(file_name,file_data,encoding):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(file_data)&nbsp;==&nbsp;0&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">file_data&nbsp;is&nbsp;zero</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;file_dir&nbsp;=&nbsp;r<span style="color: #800000; ">"</span><span style="color: #800000; ">D:\fs\test_data\qqzone</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;file_path=os.path.join(file_dir,file_name)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;file_path&nbsp;&nbsp;&nbsp;<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;fp=open(file_path,"w")</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;fp.write(file_data)</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;fp.flush()</span><span style="color: #008000; "><br />#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;fp.close()</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;codecs.open(file_path,<span style="color: #800000; ">"</span><span style="color: #800000; ">w</span><span style="color: #800000; ">"</span>,encoding)&nbsp;as&nbsp;f:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(file_data)<br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;decodeJson(json_string):<br />&nbsp;&nbsp;&nbsp;&nbsp;decode_json=None<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decode_json=json.loads(json_string)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;decode_json<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;(TypeError,&nbsp;ValueError)&nbsp;as&nbsp;err:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">TypeError&nbsp;or&nbsp;ValueError:{0}</span><span style="color: #800000; ">'</span>.format(err)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;&nbsp;Exception,e:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(&nbsp;traceback.format_exc()&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;decode_json<br /><br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;getUserBlogList():<br />&nbsp;&nbsp;&nbsp;&nbsp;blog_list=[]<br />&nbsp;&nbsp;&nbsp;&nbsp;diray_url=<span style="color: #800000; ">'''</span><span style="color: #800000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;http://b1.qzone.qq.com/cgi-bin/blognew/get_abs?hostUin=859226880&amp;blogType=0&amp;cateName=&amp;cateHex=&amp;statYear=2015&amp;reqInfo=7&amp;pos=0&amp;num=15&amp;sortType=0&amp;absType=0&amp;source=0&amp;rand=0.6346770680975169&amp;ref=qzone&amp;g_tk=1611717761&amp;verbose=1<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span>&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data=doGet(diray_url)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data_len&nbsp;=&nbsp;len(data)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;data_len&nbsp;==&nbsp;0&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">data&nbsp;len&nbsp;is&nbsp;0</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;blog_list<br />&nbsp;&nbsp;&nbsp;&nbsp;data_json&nbsp;=&nbsp;data[10:data_len-2]&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">write_file('bloglist.txt',data_json,'utf-8')&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;decode_json=decodeJson(data_json.decode(<span style="color: #800000; ">"</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">"</span>))<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;decode_json&nbsp;==&nbsp;None&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">decode_json&nbsp;is&nbsp;None</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;decode_json[<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>]&nbsp;!=&nbsp;0:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">server&nbsp;response&nbsp;code&nbsp;is&nbsp;</span><span style="color: #800000; ">"</span>+decode_json[<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=decode_json[<span style="color: #800000; ">'</span><span style="color: #800000; ">data</span><span style="color: #800000; ">'</span>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;data[<span style="color: #800000; ">'</span><span style="color: #800000; ">totalNum</span><span style="color: #800000; ">'</span>]&nbsp;&lt;=0&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">server&nbsp;response&nbsp;totalnum&nbsp;is&nbsp;</span><span style="color: #800000; ">"</span>+data[<span style="color: #800000; ">'</span><span style="color: #800000; ">totalNum</span><span style="color: #800000; ">'</span>]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;blog_list=data[<span style="color: #800000; ">'</span><span style="color: #800000; ">list</span><span style="color: #800000; ">'</span>]&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;blog_list<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;getUserBlog(uin,blogid):<br />&nbsp;&nbsp;&nbsp;&nbsp;url=<span style="color: #800000; ">'''</span><span style="color: #800000; ">&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;http://b1.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin=%(uin)s&amp;blogid=%(blogid)s&amp;styledm=ctc.qzonestyle.gtimg.cn&amp;imgdm=ctc.qzs.qq.com&amp;bdm=b.qzone.qq.com&amp;mode=2&amp;numperpage=15&amp;timestamp=1437033537&amp;dprefix=&amp;inCharset=gb2312&amp;outCharset=gb2312&amp;ref=qzone<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span>%{<span style="color: #800000; ">'</span><span style="color: #800000; ">uin</span><span style="color: #800000; ">'</span>:uin,<span style="color: #800000; ">'</span><span style="color: #800000; ">blogid</span><span style="color: #800000; ">'</span>:blogid}<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;my_headers={<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Accept-Encoding</span><span style="color: #800000; ">"</span>:<span style="color: #800000; ">"</span><span style="color: #800000; ">gzip,deflate,sdch</span><span style="color: #800000; ">"</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Accept-Language</span><span style="color: #800000; ">"</span>:&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">zh-CN,zh;q=0.8,en;q=0.6</span><span style="color: #800000; ">"</span>&nbsp;,<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">User-Agent</span><span style="color: #800000; ">"</span>:&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Mozilla/5.0&nbsp;(Windows&nbsp;NT&nbsp;6.1;&nbsp;WOW64)&nbsp;AppleWebKit/537.36&nbsp;(KHTML,&nbsp;like&nbsp;Gecko)&nbsp;Chrome/38.0.2125.104&nbsp;Safari/537.36</span><span style="color: #800000; ">"</span>&nbsp;,<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Accept</span><span style="color: #800000; ">"</span>:&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8</span><span style="color: #800000; ">"</span>&nbsp;,<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">Referer</span><span style="color: #800000; ">"</span>:&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">http://ctc.qzs.qq.com/qzone/newblog/blogcanvas.html</span><span style="color: #800000; ">"</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;=&nbsp;urllib2.Request(url,headers=my_headers)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;=&nbsp;urllib2.urlopen(request)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;URLError,e:&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;hasattr(e,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>):&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">'</span><span style="color: #800000; ">The&nbsp;server&nbsp;couldn\</span><span style="color: #800000; ">'</span>t&nbsp;fulfill&nbsp;the&nbsp;request.&nbsp;errorcode:{0}<span style="color: #800000; ">'</span><span style="color: #800000; ">.format(e.code&nbsp;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;hasattr(e,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">reason</span><span style="color: #800000; ">'</span>):&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>(<span style="color: #800000; ">'</span><span style="color: #800000; ">We&nbsp;failed&nbsp;to&nbsp;reach&nbsp;a&nbsp;server.&nbsp;reason:{0}</span><span style="color: #800000; ">'</span>.format(e.reason&nbsp;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page&nbsp;=&nbsp;response.read()&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;page&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">""</span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;getText(elem):<br />&nbsp;&nbsp;&nbsp;&nbsp;rc&nbsp;=&nbsp;[]<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;node&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;elem.itertext():<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc.append(node.strip())<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span>.join(rc)<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;gzdecode(data)&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;compressedstream&nbsp;=&nbsp;StringIO.StringIO(data)<br />&nbsp;&nbsp;&nbsp;&nbsp;gziper&nbsp;=&nbsp;gzip.GzipFile(fileobj=compressedstream)&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;data2&nbsp;=&nbsp;gziper.read()&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;读取解压缩后数据&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;data2&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;test(blogid):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;blogid<br />&nbsp;&nbsp;&nbsp;&nbsp;blog_data=getUserBlog(<span style="color: #800000; ">'</span><span style="color: #800000; ">859226880</span><span style="color: #800000; ">'</span>,blogid)<br />&nbsp;&nbsp;&nbsp;&nbsp;blog_data=gzdecode(blog_data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">write_file(&nbsp;blogid+'.html',blog_data&nbsp;)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">return</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content=blog_data.decode(<span style="color: #800000; ">'</span><span style="color: #800000; ">utf-8</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree=etree.HTML(content)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node=tree.xpath(<span style="color: #800000; ">"</span><span style="color: #800000; ">//div[@id='blogDetailDiv']</span><span style="color: #800000; ">"</span>)[0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tgt_data=getText(node)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">*</span><span style="color: #800000; ">"</span>*30<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;tgt_data<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_file(&nbsp;blogid+<span style="color: #800000; ">'</span><span style="color: #800000; ">.txt</span><span style="color: #800000; ">'</span>,tgt_data,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;&nbsp;Exception,ex&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">111</span><span style="color: #800000; ">"</span>,Exception,<span style="color: #800000; ">"</span><span style="color: #800000; ">:</span><span style="color: #800000; ">"</span>,ex<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content=blog_data.decode(<span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tree=etree.HTML(content)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node=tree.xpath(<span style="color: #800000; ">"</span><span style="color: #800000; ">//div[@id='blogDetailDiv']</span><span style="color: #800000; ">"</span>)[0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tgt_data=getText(node)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">_</span><span style="color: #800000; ">"</span>*30<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;tgt_data<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_file(&nbsp;blogid+<span style="color: #800000; ">'</span><span style="color: #800000; ">.txt</span><span style="color: #800000; ">'</span>,tgt_data&nbsp;,<span style="color: #800000; ">'</span><span style="color: #800000; ">utf-8</span><span style="color: #800000; ">'</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>&nbsp;&nbsp;Exception,ex&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">222</span><span style="color: #800000; ">"</span>,Exception,<span style="color: #800000; ">"</span><span style="color: #800000; ">:</span><span style="color: #800000; ">"</span>,ex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">main</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;test(<span style="color: #800000; ">"</span><span style="color: #800000; ">1288281044</span><span style="color: #800000; ">"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">return&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;blog_list=getUserBlogList()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;blog_item&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;blog_list:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blogId=blog_item[<span style="color: #800000; ">'</span><span style="color: #800000; ">blogId</span><span style="color: #800000; ">'</span>]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;blogId<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test(&nbsp;str(blogId)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br />main()</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/211279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2015-07-16 21:49 <a href="http://www.cppblog.com/changshoumeng/archive/2015/07/16/211279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python ip与整型 的转换，各种字节序的转换</title><link>http://www.cppblog.com/changshoumeng/archive/2015/02/02/209709.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 02 Feb 2015 12:57:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2015/02/02/209709.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/209709.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2015/02/02/209709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/209709.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/209709.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #0000FF; ">import</span>&nbsp;socket<br /><span style="color: #0000FF; ">import</span>&nbsp;struct<br /><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;IpStr2NetInt(IpStr):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;struct.unpack(&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">I</span><span style="color: #800000; ">"</span>,socket.inet_aton(IpStr)&nbsp;&nbsp;)[0]<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;IpStr2HostInt(IpStr):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;socket.ntohl(&nbsp;&nbsp;IpStr2NetInt(IpStr)&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;NetInt2IpStr(NetInt):<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">return&nbsp;HostInt2IpStr(&nbsp;socket.ntohl(NetInt)&nbsp;)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;socket.inet_ntoa(&nbsp;struct.pack(<span style="color: #800000; ">'</span><span style="color: #800000; ">I</span><span style="color: #800000; ">'</span>,NetInt)&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;<br /><span style="color: #0000FF; ">def</span>&nbsp;HostInt2IpStr(HostInt):&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;NetInt2IpStr(&nbsp;socket.htonl(HostInt)&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;main():<br />&nbsp;&nbsp;&nbsp;ip=<span style="color: #800000; ">"</span><span style="color: #800000; ">127.0.0.1</span><span style="color: #800000; ">"</span><br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;IpStr2NetInt(ip)<br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;IpStr2HostInt(ip)<br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;NetInt2IpStr(&nbsp;16777343)<br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;HostInt2IpStr(&nbsp;2130706433)<br />main()</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/209709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2015-02-02 20:57 <a href="http://www.cppblog.com/changshoumeng/archive/2015/02/02/209709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于消息队列与工作线程池的python简易服务端</title><link>http://www.cppblog.com/changshoumeng/archive/2014/09/30/208462.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Tue, 30 Sep 2014 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/09/30/208462.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/208462.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/09/30/208462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/208462.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/208462.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-#!/usr/bin/env&nbsp;pythonimport&nbsp;SocketServerfrom&nbsp...&nbsp;&nbsp;<a href='http://www.cppblog.com/changshoumeng/archive/2014/09/30/208462.html'>阅读全文</a><img src ="http://www.cppblog.com/changshoumeng/aggbug/208462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-09-30 13:51 <a href="http://www.cppblog.com/changshoumeng/archive/2014/09/30/208462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tesseract-ocr-3.02.02 的训练脚本</title><link>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208125.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 25 Aug 2014 08:54:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208125.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/208125.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/208125.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/208125.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />::&nbsp;参考了<br />::&nbsp;http://wenku.baidu.com/link?url=MjO8qNL3ttMb6gqjmprzXBxIWKvRwxSYjjDNGOSypuM-s5dKeuan1OOF7r3N6Fe6zXrqnrZmBuAB6xhn_Gxqk_<br />::&nbsp;http://www.lixin.me/blog/2012/05/26/29536&nbsp;<br />::&nbsp;zhangtao<br />:: 将此bat脚本，保存为xxx.bat，将NAME与LANG两个变量设置为对应的值，然后存放在对应的目录，即可用。<br /><br />@set&nbsp;NAME=heilongjiang.ft.exp0<br />@set&nbsp;LANG=heilongjiang<br /><br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.box&nbsp;(&nbsp;goto&nbsp;LABLE_MAKEBOX&nbsp;)&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;(&nbsp;goto&nbsp;LABLE_TRIAN&nbsp;)<br /><br /><br />:LABLE_MAKEBOX<br />@echo&nbsp;-------begin,make&nbsp;box&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" />&nbsp;-----------<br />@pause<br />..\ocr.exe&nbsp;%NAME%.tif&nbsp;%NAME%&nbsp;-l&nbsp;eng&nbsp;batch.nochop&nbsp;makebox<br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.box&nbsp;goto&nbsp;END_FLAG<br />@echo&nbsp;-------end,make&nbsp;box&nbsp;,ok-----------<br />@pause<br />exit<br /><br /><br />:LABLE_TRIAN<br />@echo&nbsp;-------begin,train&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif" alt="" />&nbsp;-----------<br />@pause<br />..\ocr.exe&nbsp;%NAME%.tif&nbsp;%NAME%&nbsp;&nbsp;box.train<br />@pause<br />..\unicharset_extractor.exe&nbsp;%NAME%.box<br />@pause<br />echo&nbsp;ft&nbsp;0&nbsp;0&nbsp;1&nbsp;0&nbsp;0&nbsp;&gt;&nbsp;%LANG%.font_properties<br />..\mftraining.exe&nbsp;-F&nbsp;%LANG%.font_properties&nbsp;-U&nbsp;unicharset&nbsp;%NAME%.tr<br />@pause<br />..\cntraining.exe&nbsp;%NAME%.tr<br />@pause<br />@rename&nbsp;normproto&nbsp;&nbsp;&nbsp;%LANG%.normproto<br />@rename&nbsp;unicharset&nbsp;&nbsp;%LANG%.unicharset<br />@rename&nbsp;inttemp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%LANG%.inttemp<br />@rename&nbsp;pffmtable&nbsp;&nbsp;&nbsp;%LANG%.pffmtable<br />@rename&nbsp;shapetable&nbsp;&nbsp;%LANG%.shapetable<br />@pause<br />..\combine_tessdata.exe&nbsp;%LANG%.<br />@echo&nbsp;%NAME%.traineddata<br />@echo&nbsp;------end,succ-------------<br />@pause</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/208125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-08-25 16:54 <a href="http://www.cppblog.com/changshoumeng/archive/2014/08/25/208125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ocr3.0的训练的bat脚本</title><link>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208116.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Mon, 25 Aug 2014 01:58:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208116.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/208116.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/08/25/208116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/208116.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/208116.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->::----------------------------------------------------------<br />::请参考<br />::&nbsp;http://www.kaiyuanba.cn/html/1/131/227/7891.htm<br />::&nbsp;http://blog.wudilabs.org/entry/f25efc5f/<br />::&nbsp;author:&nbsp;zhangtao/20140823&nbsp;/QQ:406878851<br />::----------------------------------------------------------<br />@echo<br />@set&nbsp;NAME=heilongjiang<br /><br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.box&nbsp;(&nbsp;goto&nbsp;LABLE_MAKEBOX&nbsp;)&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;(&nbsp;goto&nbsp;LABLE_TRIAN&nbsp;)<br /><br />:LABLE_MAKEBOX<br />@echo&nbsp;-------begin,make&nbsp;box&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />-----------<br />@pause<br />tesseract&nbsp;%NAME%.tif&nbsp;%NAME%&nbsp;-l&nbsp;heilongjiang&nbsp;batch.nochop&nbsp;makebox<br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.box&nbsp;goto&nbsp;END_FLAG<br />@echo&nbsp;-------end,make&nbsp;box&nbsp;,ok-----------<br />@pause<br />exit<br /><br /><br />:LABLE_TRIAN<br />@echo&nbsp;-------begin,train&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />-----------<br />@pause<br />@echo&nbsp;-1-------------<br />tesseract&nbsp;%NAME%.tif&nbsp;%NAME%&nbsp;nobatch&nbsp;box.train<br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.tr&nbsp;goto&nbsp;END_FLAG<br />@echo&nbsp;-2-------------<br />unicharset_extractor&nbsp;%NAME%.box<br />mftraining&nbsp;-U&nbsp;unicharset&nbsp;-O&nbsp;%NAME%.unicharset&nbsp;&nbsp;%NAME%.tr<br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.unicharset&nbsp;goto&nbsp;END_FLAG<br />@echo&nbsp;-3-------------<br />cntraining&nbsp;%NAME%.tr<br />@rename&nbsp;normproto&nbsp;&nbsp;%NAME%.normproto<br />@rename&nbsp;Microfeat&nbsp;&nbsp;%NAME%.Microfeat<br />@rename&nbsp;inttemp&nbsp;&nbsp;&nbsp;&nbsp;%NAME%.inttemp<br />@rename&nbsp;pffmtable&nbsp;&nbsp;%NAME%.pffmtable<br />@echo&nbsp;-4-------------<br />combine_tessdata&nbsp;%NAME%.<br />@<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;exist&nbsp;%NAME%.traineddata&nbsp;goto&nbsp;END_FLAG<br />@echo&nbsp;-----------------------------<br />@echo&nbsp;%NAME%.traineddata<br />@echo&nbsp;------end,succ---------------<br />@pause<br />exit<br /><br />:END_FLAG<br />@echo&nbsp;-------end,failed,-----------<br />@pause<br />exit</div><img src ="http://www.cppblog.com/changshoumeng/aggbug/208116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-08-25 09:58 <a href="http://www.cppblog.com/changshoumeng/archive/2014/08/25/208116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python 实现图像转换成黑白图，需要调整if n&gt;=90 这个值</title><link>http://www.cppblog.com/changshoumeng/archive/2014/08/08/207940.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Fri, 08 Aug 2014 03:42:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/08/08/207940.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/207940.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/08/08/207940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/207940.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/207940.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:&nbsp;utf-8&nbsp;-*-</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;os<br />
<span style="color: #0000FF; ">from</span>&nbsp;PIL&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;*<br />
<br />
curdir=<span style="color: #800000; ">"</span><span style="color: #800000; ">E:\\py\\WinPython-32bit-2.7.6.4\\study</span><span style="color: #800000; ">"</span><br />
<br />
os.chdir(curdir)<br />
<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;RGB2BlackWhite(filename):<br />
&nbsp;&nbsp;&nbsp;&nbsp;im=Image.open(filename)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">image&nbsp;info,</span><span style="color: #800000; ">"</span>,im.format,im.mode,im.size<br />
&nbsp;&nbsp;&nbsp;&nbsp;(w,h)=im.size<br />
&nbsp;&nbsp;&nbsp;&nbsp;R=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;G=0<br />
&nbsp;&nbsp;&nbsp;&nbsp;B=0<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;x&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(w):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;y&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(h):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos=(x,y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rgb=im.getpixel(&nbsp;pos&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(r,g,b)=rgb<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R=R+r<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G=G+g<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B=B+b<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;rate1=R*1000/(R+G+B)<br />
&nbsp;&nbsp;&nbsp;&nbsp;rate2=G*1000/(R+G+B)<br />
&nbsp;&nbsp;&nbsp;&nbsp;rate3=B*1000/(R+G+B)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">rate:</span><span style="color: #800000; ">"</span>,rate1,rate2,rate3<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;x&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(w):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;y&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;xrange(h):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos=(x,y)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rgb=im.getpixel(&nbsp;pos&nbsp;)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(r,g,b)=rgb<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n=&nbsp;r*rate1/1000&nbsp;+&nbsp;g*rate2/1000&nbsp;+&nbsp;b*rate3/1000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;"n:",n</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;n&gt;=90:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.putpixel(&nbsp;pos,(255,255,255))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.putpixel(&nbsp;pos,(0,0,0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;im.save(<span style="color: #800000; ">"</span><span style="color: #800000; ">blackwhite.bmp</span><span style="color: #800000; ">"</span>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;saveAsBmp(fname):&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;pos1=fname.rfind(<span style="color: #800000; ">'</span><span style="color: #800000; ">.</span><span style="color: #800000; ">'</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;fname1=fname[0:pos1]<br />
&nbsp;&nbsp;&nbsp;&nbsp;fname1=fname1+<span style="color: #800000; ">'</span><span style="color: #800000; ">_2.bmp</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;im&nbsp;=&nbsp;Image.open(fname)<br />
&nbsp;&nbsp;&nbsp;&nbsp;new_im&nbsp;=&nbsp;Image.new(<span style="color: #800000; ">"</span><span style="color: #800000; ">RGB</span><span style="color: #800000; ">"</span>,&nbsp;im.size)<br />
&nbsp;&nbsp;&nbsp;&nbsp;new_im.paste(im)<br />
&nbsp;&nbsp;&nbsp;&nbsp;new_im.save(fname1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;fname1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #800080; ">__name__</span>==<span style="color: #800000; ">"</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">"</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;filename=saveAsBmp(<span style="color: #800000; ">"</span><span style="color: #800000; ">4.bmp</span><span style="color: #800000; ">"</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;RGB2BlackWhite(filename)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br />
</div>
<br />
<br /><br />这里用RGB明度值来做比较，效果更好，速度更快<br /><p style="margin: 0px;">#计算某一点的明度</p> <p style="margin: 0px;">def getLightness( (r,g,b)):</p> <p style="margin: 0px;">    &nbsp;&nbsp;&nbsp;return (r*30+g*59+b*11)<br /><br /></p><br /><br /><br /><br /><br /><br /><br /><br /><br />
<img src ="http://www.cppblog.com/changshoumeng/aggbug/207940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-08-08 11:42 <a href="http://www.cppblog.com/changshoumeng/archive/2014/08/08/207940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python 将GIF转换成JPEG，BMP</title><link>http://www.cppblog.com/changshoumeng/archive/2014/08/07/207930.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Thu, 07 Aug 2014 05:39:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/08/07/207930.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/207930.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/08/07/207930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/207930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/207930.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;Image<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;sys<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;os<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />curdir</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">E:\\py\\WinPython-32bit-2.7.6.4\\study</span><span style="color: #800000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />os.chdir(curdir)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;processImage(infile):<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Image.open(infile)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">except</span><span style="color: #000000">&nbsp;IOError:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">Cant&nbsp;load</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;infile<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;0<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;mypalette&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;im.getpalette()<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.putpalette(mypalette)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_im&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Image.new(</span><span style="color: #800000">"</span><span style="color: #800000">RGB</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;im.size)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_im.paste(im)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_im.save(</span><span style="color: #800000">'</span><span style="color: #800000">foo</span><span style="color: #800000">'</span><span style="color: #000000">+</span><span style="color: #000000">str(i)</span><span style="color: #000000">+</span><span style="color: #800000">'</span><span style="color: #800000">.bmp</span><span style="color: #800000">'</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.seek(im.tell()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">except</span><span style="color: #000000">&nbsp;EOFError:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">pass</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">#</span><span style="color: #008000">&nbsp;end&nbsp;of&nbsp;sequence</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">__name__</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">'</span><span style="color: #800000">__main__</span><span style="color: #800000">'</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processImage(</span><span style="color: #800000">"</span><span style="color: #800000">10.gif</span><span style="color: #800000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im</span><span style="color: #000000">=</span><span style="color: #000000">Image.open(</span><span style="color: #800000">"</span><span style="color: #800000">foo0.bmp</span><span style="color: #800000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">img&nbsp;info:</span><span style="color: #800000">"</span><span style="color: #000000">,im.format,im.size</span></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/207930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-08-07 13:39 <a href="http://www.cppblog.com/changshoumeng/archive/2014/08/07/207930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python 按行比较两文本，看匹配率</title><link>http://www.cppblog.com/changshoumeng/archive/2014/08/06/207918.html</link><dc:creator>长寿梦</dc:creator><author>长寿梦</author><pubDate>Wed, 06 Aug 2014 05:25:00 GMT</pubDate><guid>http://www.cppblog.com/changshoumeng/archive/2014/08/06/207918.html</guid><wfw:comment>http://www.cppblog.com/changshoumeng/comments/207918.html</wfw:comment><comments>http://www.cppblog.com/changshoumeng/archive/2014/08/06/207918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changshoumeng/comments/commentRss/207918.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changshoumeng/services/trackbacks/207918.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;os<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">def</span><span style="color: #000000">&nbsp;compare_linelist(filename1,filename2):&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">compare_linelist&nbsp;(%s,%s)</span><span style="color: #800000">"</span><span style="color: #000000">%</span><span style="color: #000000">(filename1,filename2)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1</span><span style="color: #000000">=</span><span style="color: #000000">open(filename1,</span><span style="color: #800000">"</span><span style="color: #800000">r</span><span style="color: #800000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2</span><span style="color: #000000">=</span><span style="color: #000000">open(filename2,</span><span style="color: #800000">"</span><span style="color: #800000">r</span><span style="color: #800000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line1</span><span style="color: #000000">=</span><span style="color: #000000">f1.readline().strip()<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line2</span><span style="color: #000000">=</span><span style="color: #000000">f2.readline().strip()<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nSucc</span><span style="color: #000000">=</span><span style="color: #000000">0<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">=</span><span style="color: #000000">0<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;True:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;line1</span><span style="color: #000000">==</span><span style="color: #800000">''</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">or</span><span style="color: #000000">&nbsp;&nbsp;line2</span><span style="color: #000000">==</span><span style="color: #800000">''</span><span style="color: #000000">:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">%s&nbsp;:&nbsp;%s</span><span style="color: #800000">"</span><span style="color: #000000">%</span><span style="color: #000000">(line1,line2)&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">=</span><span style="color: #000000">nCount</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;line1</span><span style="color: #000000">==</span><span style="color: #000000">line2:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nSucc</span><span style="color: #000000">=</span><span style="color: #000000">nSucc</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line1</span><span style="color: #000000">=</span><span style="color: #000000">f1.readline().strip()<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line2</span><span style="color: #000000">=</span><span style="color: #000000">f2.readline().strip()&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rate</span><span style="color: #000000">=</span><span style="color: #000000">float(nSucc)</span><span style="color: #000000">/</span><span style="color: #000000">float(nCount)</span><span style="color: #000000">*</span><span style="color: #000000">100</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1.close()<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2.close()&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(nCount,nSucc,rate)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">__name__</span><span style="color: #000000">==</span><span style="color: #800000">'</span><span style="color: #800000">__main__</span><span style="color: #800000">'</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;work_directory</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">E:\\py\\WinPython-32bit-2.7.6.4\\study</span><span style="color: #800000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;os.chdir(work_directory)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">current&nbsp;directory:</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;work_directory&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;filename1</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">1.txt</span><span style="color: #800000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;filename2</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">2.txt</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;result</span><span style="color: #000000">=</span><span style="color: #000000">compare_linelist(filename1,filename2)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">print</span><span style="color: #000000">(</span><span style="color: #800000">"</span><span style="color: #800000">nCount:%d&nbsp;nSucc:%d&nbsp;rate:%d%%</span><span style="color: #800000">"</span><span style="color: #000000">)</span><span style="color: #000000">%</span><span style="color: #000000">result</span></div><img src ="http://www.cppblog.com/changshoumeng/aggbug/207918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changshoumeng/" target="_blank">长寿梦</a> 2014-08-06 13:25 <a href="http://www.cppblog.com/changshoumeng/archive/2014/08/06/207918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>