﻿<?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++博客-socketref,再见！高德-随笔分类-perl/python/php/lua/tcl</title><link>http://www.cppblog.com/socketref/category/6607.html</link><description>gis,mouse,luolasi</description><language>zh-cn</language><lastBuildDate>Wed, 01 Jul 2015 16:09:08 GMT</lastBuildDate><pubDate>Wed, 01 Jul 2015 16:09:08 GMT</pubDate><ttl>60</ttl><item><title>salesforce的oauth授权</title><link>http://www.cppblog.com/socketref/archive/2015/06/29/211090.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 29 Jun 2015 12:21:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2015/06/29/211090.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/211090.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2015/06/29/211090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/211090.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/211090.html</trackback:ping><description><![CDATA[<br />访问sf，记录下一下代码<br /><br />（注册sf的app，登记 callback-url,执行sql查询）<br /><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:utf-8</span><span style="color: #008000; "><br /></span><span style="color: #800080; ">__author__</span>&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">scott</span><span style="color: #800000; ">'</span><br /><span style="color: #0000FF; ">import</span>&nbsp;imp<br />imp.load_source(<span style="color: #800000; ">'</span><span style="color: #800000; ">init</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">../init_script.py</span><span style="color: #800000; ">'</span>)<br /><span style="color: #0000FF; ">import</span>&nbsp;urllib2,urllib,json,sys,os<br /><span style="color: #0000FF; ">import</span>&nbsp;traceback,threading,time,struct,os,os.path,shutil,distutils.dir_util,array,base64,zlib,struct,binascii<br /><span style="color: #0000FF; ">import</span>&nbsp;datetime<br /><span style="color: #0000FF; ">from</span>&nbsp;libs.python.lemon&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;webapi<span style="color: #008000; "><br /></span>callback&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">http://localhost:8002/oauth</span><span style="color: #800000; ">'</span><br />client_id&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">3MVG9ZL0ppGP5UrC_wQ8U02mOhowPKwjeaaLsWZ3BcYYVqiSsy1rL_D2h6qG.rGPnb_j6IcgLHPdhmvomzDFj</span><span style="color: #800000; ">'</span><br />client_secret&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">9046731979xxxxxxx</span><span style="color: #800000; ">'</span><br /><br /><span style="color: #0000FF; ">def</span>&nbsp;accessToken(request,code,state):<br />&nbsp;&nbsp;&nbsp;&nbsp;url&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">https://login.salesforce.com/services/oauth2/token</span><span style="color: #800000; ">'</span><br />&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">grant_type</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">authorization_code</span><span style="color: #800000; ">'</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>:code,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">client_id</span><span style="color: #800000; ">'</span>:client_id,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">client_secret</span><span style="color: #800000; ">'</span>:client_secret,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">redirect_uri</span><span style="color: #800000; ">'</span>:callback<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;urllib2.urlopen(url,urllib.urlencode(data)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traceback.print_exc()<br />&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;result.read()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;json.loads(&nbsp;result&nbsp;)<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;oauth(request):<br />&nbsp;&nbsp;&nbsp;&nbsp;cr&nbsp;=&nbsp;webapi.SuccCallReturn()<br />&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;=&nbsp;&nbsp;webapi.GET(request,<span style="color: #800000; ">'</span><span style="color: #800000; ">code</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">''</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;=&nbsp;webapi.GET(request,<span style="color: #800000; ">'</span><span style="color: #800000; ">state</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">''</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;cr.result=[code,state]<br />&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;=&nbsp;accessToken(request,code,state)<br />&nbsp;&nbsp;&nbsp;&nbsp;cr.result.append(token)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;token<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlExecute(token[<span style="color: #800000; ">'</span><span style="color: #800000; ">access_token</span><span style="color: #800000; ">'</span>],token[<span style="color: #800000; ">'</span><span style="color: #800000; ">instance_url</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;traceback.print_exc()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;cr.httpResponse()<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;cookielib<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-H&nbsp;"Authorization:&nbsp;OAuth&nbsp;token"&nbsp;-H&nbsp;"X-PrettyPrint:1"&nbsp;"</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">def</span>&nbsp;sqlExecute(token,url_host):<br />&nbsp;&nbsp;&nbsp;&nbsp;httpHandler&nbsp;=&nbsp;urllib2.HTTPHandler(debuglevel=1)<br />&nbsp;&nbsp;&nbsp;&nbsp;httpsHandler&nbsp;=&nbsp;urllib2.HTTPSHandler(debuglevel=1)<br />&nbsp;&nbsp;&nbsp;&nbsp;opener&nbsp;=&nbsp;urllib2.build_opener(httpHandler,&nbsp;httpsHandler)<br />&nbsp;&nbsp;&nbsp;&nbsp;urllib2.install_opener(opener)<br />&nbsp;&nbsp;&nbsp;&nbsp;sf_cmd_query=<span style="color: #800000; ">"</span><span style="color: #800000; ">%s/services/data/v20.0/query/?%s</span><span style="color: #800000; ">"</span>%(url_host,&nbsp;urllib.urlencode({<span style="color: #800000; ">'</span><span style="color: #800000; ">q</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">select&nbsp;count()&nbsp;from&nbsp;account</span><span style="color: #800000; ">'</span>}))<br />&nbsp;&nbsp;&nbsp;&nbsp;headers&nbsp;=&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">Authorization</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">OAuth&nbsp;%s</span><span style="color: #800000; ">'</span>%token,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">X-PrettyPrint</span><span style="color: #800000; ">'</span>:1<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;httpReq&nbsp;=&nbsp;urllib2.Request(&nbsp;sf_cmd_query,headers=headers&nbsp;)<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;=&nbsp;opener.open(httpReq).read()<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">print</span>&nbsp;r<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">pass</span><br /><br />url1&nbsp;=&nbsp;<span style="color: #800000; ">"""</span><span style="color: #800000; ">https://login.salesforce.com/services/oauth2/authorize?response_type=code&amp;client_id=%s&amp;redirect_uri=%s&amp;state=first</span><span style="color: #800000; ">"""</span>%(client_id,callback)<br /><br /><span style="color: #0000FF; ">def</span>&nbsp;launchBrowserForOAuth():<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;webbrowser<br />&nbsp;&nbsp;&nbsp;&nbsp;webbrowser.open(url1)<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>:<span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;launchBrowserForOAuth()</div><img src ="http://www.cppblog.com/socketref/aggbug/211090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2015-06-29 20:21 <a href="http://www.cppblog.com/socketref/archive/2015/06/29/211090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python::简单数据对象到Object自动转换</title><link>http://www.cppblog.com/socketref/archive/2015/05/26/210748.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 26 May 2015 06:44:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2015/05/26/210748.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/210748.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2015/05/26/210748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/210748.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/210748.html</trackback:ping><description><![CDATA[<br />python内部数据容器有dict和list两种 ，工作中最常用的方式是定义一些数据结构（数据即代码）,例如:&nbsp;<br /><span style="font-size: 13px; background-color: #eeeeee;"><br /></span><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: #008080; ">1</span>&nbsp;frog={<span style="color: #800000; ">'</span><span style="color: #800000; ">name</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">scott</span><span style="color: #800000; ">'</span>,<br /><span style="color: #008080; ">2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">age</span><span style="color: #800000; ">'</span>:2,<br /><span style="color: #008080; ">3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">parts</span><span style="color: #800000; ">'</span>:{<br /><span style="color: #008080; ">4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">eye</span><span style="color: #800000; ">'</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">green</span><span style="color: #800000; ">'</span>,<span style="color: #800000; ">'</span><span style="color: #800000; ">leg</span><span style="color: #800000; ">'</span>:85<br /><span style="color: #008080; ">5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br /><span style="color: #008080; ">6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">''</span>friend<span style="color: #800000; ">"</span><span style="color: #800000; ">:['moee','wee'],</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">7</span>&nbsp;<span style="color: #800000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">hometown</span><span style="color: #800000; ">"</span>:<span style="color: #800000; ">'</span><span style="color: #800000; ">affica</span><span style="color: #800000; ">'</span><br /><span style="color: #008080; ">8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div><br />frog对象定义了小动物的某些属性，访问frog对象属性时，通过 dict,list的取值方法进行访问，例如: &nbsp;<br />print frog['name']<br />print frog['friend'][0] &nbsp;<br />有时觉得这种表达方式太原始了，需要改进，最好是以 '.'方式访问对象属性，例如: &nbsp;<br />print frog.name<br />代码来开始和结束吧， class _x&nbsp;<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: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;_x:<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">"""</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;从简单数据类型转换成python对象<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;_x({'name':'boob','body':{'color':'black'},'toys':[1,2,3,],'age':100})<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p['toys'][1]<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;len(p.toys)<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;p.body.colors<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">"""</span><br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self,primitive):<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.data&nbsp;=&nbsp;primitive<br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__getattr__</span>(self,&nbsp;item):<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;self.data.get(item,None)<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;type(value)&nbsp;==&nbsp;dict:<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;_x(value)<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;value<br /><span style="color: #008080; ">18</span>&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__len__</span>(self):<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;len(self.data)<br /><span style="color: #008080; ">21</span>&nbsp;<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;str(self.data)<br /><span style="color: #008080; ">24</span>&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__getitem__</span>(self,&nbsp;item):<br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;None<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;type(self.data)&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;(list,tuple):<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;self.data[item]<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;type(value)&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;(dict,list,tuple):<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;_x(value)<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;type(self.data)&nbsp;==&nbsp;dict:<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;self.<span style="color: #800080; ">__getattr__</span>(item)<br /><span style="color: #008080; ">33</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;value</div><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/socketref/aggbug/210748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2015-05-26 14:44 <a href="http://www.cppblog.com/socketref/archive/2015/05/26/210748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python::配置文件简单读取 SimpleConfig</title><link>http://www.cppblog.com/socketref/archive/2013/04/02/199040.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 02 Apr 2013 05:36:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2013/04/02/199040.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/199040.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2013/04/02/199040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/199040.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/199040.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;SimpleConfig:<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__init__</span>(self):<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.confile&nbsp;=<span style="color: #800000; ">''</span><br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.props={}<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;load(self,file):<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>:<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;=&nbsp;open(file,<span style="color: #800000; ">'</span><span style="color: #800000; ">r</span><span style="color: #800000; ">'</span>)<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;=&nbsp;f.readlines()<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.close()<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.props={}<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&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 /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;=&nbsp;line.strip()<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;<span style="color: #0000FF; ">not</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">or</span>&nbsp;line[0]==<span style="color: #800000; ">'</span><span style="color: #800000; ">#</span><span style="color: #800000; ">'</span>:<br /><span style="color: #008080; ">15</span>&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 /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;=&nbsp;line.split(<span style="color: #800000; ">'</span><span style="color: #800000; ">#</span><span style="color: #800000; ">'</span>)[0]<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pp&nbsp;=&nbsp;line.split(<span style="color: #800000; ">'</span><span style="color: #800000; ">=</span><span style="color: #800000; ">'</span>)<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(pp)!=2:<br /><span style="color: #008080; ">19</span>&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 /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k,v&nbsp;=&nbsp;pp[0].strip(),pp[1].strip()<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.props[k]&nbsp;=&nbsp;v<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">except</span>:<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traceback.print_exc()<br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.props&nbsp;={}<br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;True<br /><span style="color: #008080; ">26</span>&nbsp;<br /><span style="color: #008080; ">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;get(self,key,default=None):<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;self.props.get(key,default)</div><img src ="http://www.cppblog.com/socketref/aggbug/199040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2013-04-02 13:36 <a href="http://www.cppblog.com/socketref/archive/2013/04/02/199040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python::代码学习</title><link>http://www.cppblog.com/socketref/archive/2012/07/10/182547.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 10 Jul 2012 02:04:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/07/10/182547.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/182547.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/07/10/182547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/182547.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/182547.html</trackback:ping><description><![CDATA[提高水平总是靠学习他人代码来的快 <br /><br />看看这个代码，摘录自gameobject<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: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;</span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800080; ">__init__</span><span style="color: #000000; ">(self,&nbsp;x</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0.,&nbsp;y</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0.):<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">"""</span><span style="color: #800000; ">Initialise&nbsp;a&nbsp;vector<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@type&nbsp;x:&nbsp;number<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@param&nbsp;x:&nbsp;The&nbsp;x&nbsp;value&nbsp;(defaults&nbsp;to&nbsp;0.),&nbsp;or&nbsp;a&nbsp;container&nbsp;of&nbsp;2&nbsp;values<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@type&nbsp;x:&nbsp;number<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@param&nbsp;y:&nbsp;The&nbsp;y&nbsp;value&nbsp;(defaults&nbsp;to&nbsp;0.)<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">"""</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;hasattr(x,&nbsp;</span><span style="color: #800000; ">"</span><span style="color: #800000; ">__getitem__</span><span style="color: #800000; ">"</span><span style="color: #000000; ">):<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x,&nbsp;y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self._v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;[float(x),&nbsp;float(y)]<br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self._v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;[float(x),&nbsp;float(y)]</span></div>挺好的，参数带入可以支持 a(1,2)形式，也可支持a( (1,2) )形式 ，非常灵活，自已以前总是想不到用hasattr来判断<br /><br /><br /><img src ="http://www.cppblog.com/socketref/aggbug/182547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-07-10 10:04 <a href="http://www.cppblog.com/socketref/archive/2012/07/10/182547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python编写网络通信框架-基于线程的消息传送</title><link>http://www.cppblog.com/socketref/archive/2012/03/08/167450.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 08 Mar 2012 15:12:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/08/167450.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/167450.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/08/167450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/167450.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/167450.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 耗时1天，根据公司应用需求，开发一种简易的基础的通信框架，简化系统其它模块在网络通信工作方面的复杂度简单测试network.py service 做服务器，network.py client做客户端，传送多个消息报文，且能响应sock连接和断开状态考虑到性能和实际项目对线程需求，故都采用单连接单线程模式，预留select多路复用接口，可见: service.selectIn()Code highl...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2012/03/08/167450.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/167450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-08 23:12 <a href="http://www.cppblog.com/socketref/archive/2012/03/08/167450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gis:ks102 设备解码</title><link>http://www.cppblog.com/socketref/archive/2012/03/08/167401.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 08 Mar 2012 07:23:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/08/167401.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/167401.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/08/167401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/167401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/167401.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 与ks108同一个项目，ks102为编写手持gps模块，个人、宠物使用Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#&nbsp;--&nbsp;coding:utf-8&nbsp;--&nbsp;&nbsp;2...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2012/03/08/167401.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/167401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-08 15:23 <a href="http://www.cppblog.com/socketref/archive/2012/03/08/167401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gis::ks108设备接入解码</title><link>http://www.cppblog.com/socketref/archive/2012/03/08/167400.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 08 Mar 2012 07:20:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/08/167400.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/167400.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/08/167400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/167400.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/167400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ks108 Gps定位模块接入服务中心，解码类：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#&nbsp;--&nbsp;coding:utf-8&nbsp;--&nbsp;&nbsp;2&nbsp;#解码器定...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2012/03/08/167400.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/167400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-08 15:20 <a href="http://www.cppblog.com/socketref/archive/2012/03/08/167400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogr::简化LineString输出到shp文件</title><link>http://www.cppblog.com/socketref/archive/2012/03/02/166927.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 01 Mar 2012 17:04:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/02/166927.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/166927.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/02/166927.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/166927.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/166927.html</trackback:ping><description><![CDATA[<br />OGR1.6 above<br />python2.4 above<br /><br />只需要定义fields,roads数据调用serial_shpdata_road()即可一次输出到shp文件<br />不适合大批量坐标一次生成shp<br />ogr的问题在于python代码中初始化layer之后传递到其他函数使用将会导致莫名错误，应该是个bug<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: #008080; ">&nbsp;1</span>&nbsp;&nbsp;&nbsp; #bin.zhang@sw2us.com<br /><span style="color: #000000; "></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;fields</span><span style="color: #000000; ">=</span><span style="color: #000000; ">[<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #800000; ">'</span><span style="color: #800000; ">name</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:</span><span style="color: #800000; ">'</span><span style="color: #800000; ">roadname</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">type</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:FIELD_STRING,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">width</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:</span><span style="color: #000000; ">30</span><span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;]<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;roads</span><span style="color: #000000; ">=</span><span style="color: #000000; ">[<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">geom</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:[(</span><span style="color: #000000; ">121.1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">31.1</span><span style="color: #000000; ">),(</span><span style="color: #000000; ">121.101</span><span style="color: #000000; ">,</span><span style="color: #000000; ">31.102</span><span style="color: #000000; ">),(</span><span style="color: #000000; ">121.101</span><span style="color: #000000; ">,</span><span style="color: #000000; ">31.2</span><span style="color: #000000; ">)],<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">attrs</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">xscott.test</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,)<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;]<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;serial_shpdata_road(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">d:/temp3/aa.shp</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,fields,roads)<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #800000; ">def&nbsp;serial_shpdata_road(file,fields,roads):<br /></span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields:&nbsp;[{name,type,width},<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />]<br /></span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;roads&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;[{</span><span style="color: #800000; ">'</span><span style="color: #800000; ">geom</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:[(x,y),..],</span><span style="color: #800000; ">'</span><span style="color: #800000; ">wkt</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:</span><span style="color: #800000; ">''</span><span style="color: #000000; ">,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">attrs</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:[name,type,len,<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />]},..]<br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer&nbsp;=&nbsp;None<br /></span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;os.path.exists(file):<br /></span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.remove(file)<br /></span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;makePrjFile(file)<br /></span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;ds&nbsp;=&nbsp;driver.CreateDataSource(file)<br /></span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer&nbsp;=&nbsp;ds.CreateLayer("road",geom_type=ogr.wkbMultiLineString)<br /></span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;f&nbsp;in&nbsp;fields:<br /></span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld&nbsp;=&nbsp;ogr.FieldDefn(f['name'],f['type'])<br /></span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;f['type']&nbsp;==&nbsp;FIELD_STRING&nbsp;:<br /></span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;=&nbsp;30<br /></span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;f.has_key('width'):<br /></span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;=&nbsp;f['width']<br /></span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld.SetWidth(w)<br /></span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.CreateField(fld)<br /></span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftrdfn&nbsp;=&nbsp;layer.GetLayerDefn()<br /></span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;r&nbsp;in&nbsp;roads:<br /></span><span style="color: #008080; ">38</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;=&nbsp;None<br /></span><span style="color: #008080; ">39</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;r.has_key('wkt'):<br /></span><span style="color: #008080; ">40</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;=&nbsp;ogr.CreateGeometryFromWkt(r['wkt'])<br /></span><span style="color: #008080; ">41</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;r.has_key('geom'):<br /></span><span style="color: #008080; ">42</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pts&nbsp;=&nbsp;r['geom']<br /></span><span style="color: #008080; ">43</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pts&nbsp;=&nbsp;map(lambda&nbsp;pt:&nbsp;'%s&nbsp;%s'%(pt[0],pt[1]),pts)<br /></span><span style="color: #008080; ">44</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;=&nbsp;string.join(pts,',')<br /></span><span style="color: #008080; ">45</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wkt&nbsp;=&nbsp;"MULTILINESTRING((%s))"%txt<br /></span><span style="color: #008080; ">46</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;=&nbsp;ogr.CreateGeometryFromWkt(wkt)<br /></span><span style="color: #008080; ">47</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">48</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;=&nbsp;ogr.Feature(ftrdfn)<br /></span><span style="color: #008080; ">49</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr.SetGeometry(g)<br /></span><span style="color: #008080; ">50</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;n&nbsp;in&nbsp;range(len(r['attrs'])):<br /></span><span style="color: #008080; ">51</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;=&nbsp;r['attrs'][n]<br /></span><span style="color: #008080; ">52</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr.SetField(n,at)<br /></span><span style="color: #008080; ">53</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.CreateFeature(ftr)<br /></span><span style="color: #008080; ">54</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer.SyncToDisk()<br /></span><span style="color: #008080; ">55</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp; <br /></span></div><img src ="http://www.cppblog.com/socketref/aggbug/166927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-02 01:04 <a href="http://www.cppblog.com/socketref/archive/2012/03/02/166927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何Python编写COM server</title><link>http://www.cppblog.com/socketref/archive/2012/03/01/166843.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 01 Mar 2012 02:24:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/01/166843.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/166843.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/01/166843.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/166843.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/166843.html</trackback:ping><description><![CDATA[开发工作都想用python+qt来实现<br />手头的项目涉及不同部门的成果，还要与公司产品做无缝接入，必然要用到ctypes，qt，com之类的东西了<br />数据编码采用json或者xml<br />以com方式提供生产系统访问接口，直觉告诉我实现会有点问题，那就是python+Qt做com组件，这个组件与影像系统通信，<br />com组件访问显示qt的ui界面会存在问题，没有做过尝试，不知是否能行<br />Com方式提供服务采用独立服务器模式还是独立的组件模式(其实是个线程模型问题，独立进程的com server还是加载到应用app进程的com object)<br /><br />花点时间琢磨去........<img src ="http://www.cppblog.com/socketref/aggbug/166843.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-01 10:24 <a href="http://www.cppblog.com/socketref/archive/2012/03/01/166843.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python::写ctypes的好帮手pyglet.wrap.py</title><link>http://www.cppblog.com/socketref/archive/2012/03/01/166842.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 01 Mar 2012 02:16:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/03/01/166842.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/166842.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/03/01/166842.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/166842.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/166842.html</trackback:ping><description><![CDATA[在弄地图路网接口时，北京提供的是c的实现版本，本就知道ctypes可以直接调用外部dll，之前一直用swig进行包装给python使用，好久没弄都忘了，再弄就嫌烦了，最简单就用ctypes吧<br />要用ctypes当然要看文档了，里面定义结构必须自己手动写，POINTER,Structure之类的，好烦！<br />运气来了，无意之间找到个pyglet的项目里面有个tools/wrap.py的东西，还是个式样性质的东西，并没有在他的发行代码中，但可访问他的svn可以获取到，wrap.py输入一个.h的文件便可自动生成对应的数据结构，试了一下avcodec.h，立马出来个avcodec.py,爽啊<br /><img src ="http://www.cppblog.com/socketref/aggbug/166842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-03-01 10:16 <a href="http://www.cppblog.com/socketref/archive/2012/03/01/166842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogr转换shp秒到度单位</title><link>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 01 Feb 2012 18:14:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/164810.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/164810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/164810.html</trackback:ping><description><![CDATA[公司的shp数据都是以秒为单位存储，要做监控和道路匹配，直接与gps接收坐标无法实现，必须转换shp单位为度单位<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: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">--coding:utf-8---</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;brief:&nbsp;&nbsp;内业shp数据，转换秒到度为单位</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;author:&nbsp;scott</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;date:&nbsp;2012.1.30&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;org:&nbsp;&nbsp;--navi.com</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;version:&nbsp;v0.1.0&nbsp;2012.2.1</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;1.create&nbsp;doc&nbsp;and&nbsp;test&nbsp;ok,&nbsp;types&nbsp;(included&nbsp;point|line|polygon|multipolygon)&nbsp;be&nbsp;supported</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;os,os.path,sys,time,copy,shutil<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">from</span><span style="color: #000000; ">&nbsp;osgeo&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;ogr<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerPoint(layer):<br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; ">&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; ">point&nbsp;num:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,layer.GetFeatureCount()<br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; ">&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; ">extent:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,layer.GetExtent()<br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:<br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;cc</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef().GetPoint(0)<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()<br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g#,g.ExportKML()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.SetPoint(0,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.)<br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ng&nbsp;=&nbsp;ogr.Geometry(ogr.wkbPoint)<br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;pt<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ng.SetPoint(0,pt[0]+40,pt[1])<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr.SetGeometry(ng)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerLine(layer):<br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetPointCount()<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;0<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;cc&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;cnt:<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g.GetPoint(cc)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(cnt):<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetPoint(n)<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.SetPoint(n,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600.0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerPolygon(layer):<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetGeometryCount()<br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(cnt):<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gg&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetGeometryRef(n)<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;m&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(gg.GetPointCount()&nbsp;):<br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;gg.GetPoint(m)<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;pt</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gg.SetPoint(m,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600.0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_shpfile(file):<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;file</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&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; ">ready&nbsp;file:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,file<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;driver&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ogr.GetDriverByName(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">ESRI&nbsp;Shapefile</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">shp&nbsp;=&nbsp;driver.Open('e:/shp_data/points.shp',1)&nbsp;&nbsp;#&nbsp;0&nbsp;-&nbsp;read&nbsp;,&nbsp;1&nbsp;-&nbsp;write&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;shp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;driver.Open(file,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;0&nbsp;-&nbsp;read&nbsp;,&nbsp;1&nbsp;-&nbsp;write&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;shp.GetLayer()<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;layer.GetFeatureCount()&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;0:<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetLayerDefn().GetGeomType()<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;file.lower().find(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">province</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&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; ">return&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbPoint:<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerPoint(layer)<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">elif</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbLineString:<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerLine(layer)<br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">elif</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbPolygon:<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerPolygon(layer)<br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&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; ">unknown&nbsp;type:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,gtyp,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,file<br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer.SyncToDisk()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;shp.Destroy()<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;convert(shpdir):<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;os.listdir(shpdir)<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;file&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;files:<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;&nbsp;file.lower().find(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">.shp</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">if&nbsp;file&nbsp;==&nbsp;'points.shp':</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_shpfile(shpdir</span><span style="color: #000000; ">+</span><span style="color: #800000; ">"</span><span style="color: #800000; ">/</span><span style="color: #800000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">file)<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; "></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 /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">convert(&nbsp;'e:/shp_data'&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;sys.argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:]:<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convert(sys.argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convert(&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">D:/temp3/mess/MESH/H51F009012</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp; <br /></span></div><img src ="http://www.cppblog.com/socketref/aggbug/164810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-02-02 02:14 <a href="http://www.cppblog.com/socketref/archive/2012/02/02/164810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python::增加fetchoneDict()</title><link>http://www.cppblog.com/socketref/archive/2011/12/29/163052.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 28 Dec 2011 17:34:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/12/29/163052.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/163052.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/12/29/163052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/163052.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/163052.html</trackback:ping><description><![CDATA[有些dbi2的数据库实现了fetchoneDict接口，毕竟不是强制要求的，但是实际应用中非常有用<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: #0000FF; "><br />import</span><span style="color: #000000; ">&nbsp;sys,sqlite3,os<br /></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;fetchoneDict(cr):<br />&nbsp;&nbsp;&nbsp;&nbsp;ff&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;[&nbsp;r[0]&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;cr.description&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;rr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cr.fetchone()<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;rr:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;dict(&nbsp;zip(ff,rr)&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;{}<br /><br />cnn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;&nbsp;sqlite3.connect(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">e:/tax.db3</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;dir(sqlite3)<br />cr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cnn.execute(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">select&nbsp;*&nbsp;from&nbsp;core_bill</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /><br /></span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:<br />&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;fetchoneDict(cr)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">not</span><span style="color: #000000; ">&nbsp;r:&nbsp;</span><span style="color: #0000FF; ">break</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;r</span></div><img src ="http://www.cppblog.com/socketref/aggbug/163052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-12-29 01:34 <a href="http://www.cppblog.com/socketref/archive/2011/12/29/163052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>人事抄税数据转换(python)</title><link>http://www.cppblog.com/socketref/archive/2011/08/30/154680.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 30 Aug 2011 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/08/30/154680.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/154680.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/08/30/154680.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/154680.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/154680.html</trackback:ping><description><![CDATA[啊关的企业在处理用友erp人事数据与税务报税时转换数据时被停滞了，一个小时内完成他的需求<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: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;-*-&nbsp;coding:utf-8&nbsp;-*-</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;soctt.bin&nbsp;created&nbsp;&nbsp;2011.8.29</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;sw2us.com&nbsp;@2011&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">#<br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;sys,os,os.path,time,struct,traceback,threading,datetime,string,datetime,calendar<br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;xlrd<br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000; ">start_year</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0<br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #000000; ">start_month</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;0<br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; ">start_day&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; ">end_day&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;start_day&nbsp;<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; ">end_year</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;0<br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; ">end_month&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;0<br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; ">employee_importFile</span><span style="color: #000000; ">=</span><span style="color: #000000; ">u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">111111111.XLS</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; ">tax_importFile</span><span style="color: #000000; ">=</span><span style="color: #000000; ">u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">题桥工资格式.xls</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; ">employee_exportFile</span><span style="color: #000000; ">=</span><span style="color: #000000; ">u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">empolyees.txt</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; ">tax_exportFile</span><span style="color: #000000; ">=</span><span style="color: #000000; ">u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">personTax.txt</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">employeelistfile</span><span style="color: #000000; ">=</span><span style="color: #800000; ">'</span><span style="color: #800000; ">employee_simplelist.txt</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; ">fixDeduct&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2000.00</span><span style="color: #000000; ">&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">扣除额</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; "></span><span style="color: #008000; ">#</span><span style="color: #008000; ">人员归档</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;employeeAchive():<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">工号~~姓名~~证件类型~~证件号~~性别~~出生日期~~国家、地区~~开票标志~~申报方式~~职务~~地址~~含税标志~~邮政编码~~调入调离~~备注</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">rowfmt&nbsp;=&nbsp;u"%s~~&nbsp;%s~~&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0"</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rowfmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u</span><span style="color: #800000; ">"</span><span style="color: #800000; ">%s~~&nbsp;%s~~&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rowfmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;rowfmt.replace(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; ">''</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;wb&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;xlrd.open_workbook(employee_importFile)&nbsp;<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sh&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;wb.sheet_by_index(0)<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(employee_exportFile,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">w</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;title.encode(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.write(title)<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.write(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file2&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(employeelistfile,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">w</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">清单表2</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,sh.nrows):<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sh.row_values(r)<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;map(string.strip,v)<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birth&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">''</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y,m,d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v[</span><span style="color: #000000; ">4</span><span style="color: #000000; ">].split(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">-</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;birth&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">"</span><span style="color: #800000; ">%04d%02d%02d</span><span style="color: #800000; ">"</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(int(y),int(m),int(d))<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">except</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">出生年月空缺&nbsp;(%s,%s)</span><span style="color: #800000; ">'</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(v[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;rowfmt</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(v[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">],birth)<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;txt.encode(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;len(txt)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(txt</span><span style="color: #000000; ">+</span><span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">"</span><span style="color: #800000; ">%s~~%s~~%s\n</span><span style="color: #800000; ">"</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(v[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;txt.encode(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file2.write(txt)<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.close()<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file2.close()<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;precess_parameters():<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">global</span><span style="color: #000000; ">&nbsp;start_year,start_month,end_year,end_month,start_day,end_day<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cur&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;datetime.datetime.now()<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;start_year&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur.year<br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;start_month&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cur.month<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;len(sys.argv)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;len(sys.argv)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">4</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">and</span><span style="color: #000000; ">&nbsp;sys.argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">==</span><span style="color: #800000; ">'</span><span style="color: #800000; ">tax</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_year&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;int(sys.argv[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">])&nbsp;<br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_month&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;int(sys.argv[</span><span style="color: #000000; ">3</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;start_day&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;x,end_day</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;calendar.monthrange(start_year,start_month)<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;salaryTax():<br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">global</span><span style="color: #000000; ">&nbsp;start_year,start_month,end_year,end_month,start_day,end_day<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;precess_parameters()<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;hashemployee&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;{}<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(employeelistfile,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">r</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;lines&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;file.readlines()<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.close()<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;line&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;lines:<br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;line.strip().split(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">~~</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;line[0]<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;line[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hashemployee[k]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">以上建立员工查找表</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">证件类型~~证件号码~~税目代码~~含税标志~~所属期起~~所属期止~~天数~~收入额~~扣除额~~应缴税额~~国家地区~~减免税额~~实缴税额</span><span style="color: #800000; ">'</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">rowfmt&nbsp;=&nbsp;u"1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~010000&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s"</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rowfmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;&nbsp;u</span><span style="color: #800000; ">"</span><span style="color: #800000; ">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~010000&nbsp;&nbsp;~~1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;~~%s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~~%s</span><span style="color: #800000; ">"</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;rowfmt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;rowfmt.replace(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; ">''</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;wb&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;xlrd.open_workbook(tax_importFile)&nbsp;<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sh&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;wb.sheet_by_index(0)<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;open(tax_exportFile,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">w</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;title.encode(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.write(title)<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.write(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,sh.nrows):<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sh.row_values(r)<br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;map(unicode,v)<br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;map(string.strip,v)<br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">''</span><span style="color: #000000; ">&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">身份证编号</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sid&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;hashemployee[v[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]]<br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">except</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;u</span><span style="color: #800000; ">'</span><span style="color: #800000; ">处理异常中断:&nbsp;工号不能匹配!&nbsp;工号:&nbsp;%s</span><span style="color: #800000; ">'</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(v[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">123</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exit(0)<br /></span><span style="color: #008080; ">124</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">"</span><span style="color: #800000; ">%04d%02d%02d</span><span style="color: #800000; ">"</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(start_year,start_month,start_day)<br /></span><span style="color: #008080; ">125</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">"</span><span style="color: #800000; ">%04d%02d%02d</span><span style="color: #800000; ">"</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(start_year,start_month,end_day)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">126</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;rowfmt</span><span style="color: #000000; ">%</span><span style="color: #000000; ">(sid,start,end,&nbsp;end_day</span><span style="color: #000000; ">-</span><span style="color: #000000; ">start_day</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,v[</span><span style="color: #000000; ">22</span><span style="color: #000000; ">],fixDeduct,v[</span><span style="color: #000000; ">24</span><span style="color: #000000; ">],v[</span><span style="color: #000000; ">24</span><span style="color: #000000; ">]&nbsp;)&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">应发工资&nbsp;W（v[22])</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">127</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;txt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;txt.encode(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">gbk</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">128</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.write(txt</span><span style="color: #000000; ">+</span><span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">129</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;file.close()<br /></span><span style="color: #008080; ">130</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">131</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">132</span>&nbsp;<span style="color: #000000; "></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 /></span><span style="color: #008080; ">133</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;employeeAchive()<br /></span><span style="color: #008080; ">134</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;salaryTax()<br /></span><span style="color: #008080; ">135</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp; <br /></span></div><img src ="http://www.cppblog.com/socketref/aggbug/154680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-08-30 11:28 <a href="http://www.cppblog.com/socketref/archive/2011/08/30/154680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cx_Oracle访问oracle 10g ，弄了半天才搞定</title><link>http://www.cppblog.com/socketref/archive/2011/07/19/151341.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 18 Jul 2011 16:54:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/07/19/151341.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/151341.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/07/19/151341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/151341.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/151341.html</trackback:ping><description><![CDATA[真的自己没有恒心恐怕要半途而废了<br />cxoracle版本与oracle instantclient版本 必须严格匹配（花了很多时间）<br /><div><br />http://cx-oracle.sourceforge.net/&nbsp;&nbsp; &nbsp; <br /><br />oracle 10g<br />cx_Oracle-5.1-10g.win32-py2.6.msi<br />instantclient-basic-win32-10.2.0.4.zip<br />解压instantclient-basic-win32-10.2.0.4.zip ，并将此目录设置为ORACLE_HOME<br />将instantclient-basic-win32-10.2.0.4目录内的dll拷贝到c:\python26\lib\site_packages<br />运行oracle_test.py测试是否能连接到远程oracle服务 <br /><br />import cx_Oracle<br />dsn_tns = cx_Oracle.makedsn('192.168.14.203', 1521,'ORCL')&nbsp;&nbsp; -- ORCL为远端oracle配置的listener的名称<br />print cx_Oracle.connect('tax','tax',dsn_tns)</div><img src ="http://www.cppblog.com/socketref/aggbug/151341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-07-19 00:54 <a href="http://www.cppblog.com/socketref/archive/2011/07/19/151341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gps::ks-102设备协议接入代码</title><link>http://www.cppblog.com/socketref/archive/2011/06/16/148810.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 16 Jun 2011 13:56:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/06/16/148810.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/148810.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/06/16/148810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/148810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/148810.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#&nbsp;--&nbsp;coding:utf-8&nbsp;--&nbsp;&nbsp;2&nbsp;#TK102&nbsp;解码器定义&nbsp;&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2011/06/16/148810.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/148810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-06-16 21:56 <a href="http://www.cppblog.com/socketref/archive/2011/06/16/148810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gps::ks-108设备协议接入代码</title><link>http://www.cppblog.com/socketref/archive/2011/06/15/148721.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 15 Jun 2011 08:54:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/06/15/148721.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/148721.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/06/15/148721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/148721.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/148721.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#&nbsp;--&nbsp;coding:utf-8&nbsp;--&nbsp;&nbsp;2&nbsp;#解码器定义&nbsp;&nbsp;3&nbsp;&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2011/06/15/148721.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/148721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-06-15 16:54 <a href="http://www.cppblog.com/socketref/archive/2011/06/15/148721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python写xml</title><link>http://www.cppblog.com/socketref/archive/2011/06/06/148166.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 06 Jun 2011 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/06/06/148166.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/148166.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/06/06/148166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/148166.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/148166.html</trackback:ping><description><![CDATA[<div><p>import xml.dom.minidom<br />from xml.dom.DOMImplementation import implementation<br />import xml.sax.writer<br />import xml.utils</p><p># Create a new document with no namespace uri, qualified name,<br /># or document type<br />document = implementation.createDocument(None,None,None)<br />personnel = document.createElement("personnel")<br />personnel.setAttribute('number', '5')<br />document.appendChild(personnel)<br />sexnode = document.createElement("sex")<br />sexnode.appendChild(document.createTextNode("male"))</p><p>namenode = document.createElement("name")<br />namenode.appendChild(document.createTextNode("tianbin"))</p><p>personnel.appendChild(sexnode)<br />personnel.appendChild(namenode)</p><p>out = open("tianbin.xml", "w")<br />xml.dom.ext.PrettyPrint(document,out)</p></div><img src ="http://www.cppblog.com/socketref/aggbug/148166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-06-06 23:23 <a href="http://www.cppblog.com/socketref/archive/2011/06/06/148166.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python字符转换，老忘</title><link>http://www.cppblog.com/socketref/archive/2011/05/28/147477.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Sat, 28 May 2011 08:38:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/05/28/147477.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/147477.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/05/28/147477.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/147477.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/147477.html</trackback:ping><description><![CDATA[<div><p>decode的作用是将其他编码的字符串转换成unicode编码，如str1.decode('gb2312')，表示将gb2312编码的字符串转换成unicode编码。</p><p>encode的作用是将unicode编码转换成其他编码的字符串，如str2.encode('gb2312')，表示将unicode编码的字符串转换成gb2312编码。</p></div><img src ="http://www.cppblog.com/socketref/aggbug/147477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-05-28 16:38 <a href="http://www.cppblog.com/socketref/archive/2011/05/28/147477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>交易系统备份方案</title><link>http://www.cppblog.com/socketref/archive/2011/01/25/139285.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Tue, 25 Jan 2011 08:20:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2011/01/25/139285.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/139285.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2011/01/25/139285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/139285.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/139285.html</trackback:ping><description><![CDATA[公司的交易系统bs架构，通过http方式访问备份数据库。开发公司不肯合作的态度，所以每一次必须人工的去登陆网站是手动备份。<br>每天安排6次备份，这种对于一个程序开发者来讲的话真是一种痛苦和侮辱。<br><br>今天空下来就用python开始编写自动备份方案：<br>1.http自动登录<br>2.wget断点下载<br>3.7zip压缩<br>4.网盘 everbox的同步到服务器<br><br>与http server的交互信息用wireshark抓包分析，还蛮灵光的<br><br>python代码：<br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;-*-&nbsp;coding:utf-8&nbsp;-*-</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">auto&nbsp;backup&nbsp;system&nbsp;database&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">自动登录，http下载，压缩之后通过网盘同步到服务器</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;httplib,&nbsp;urllib,sys,os,re,datetime,time,os.path,gzip<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">host</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">192.168.1.106</span><span style="color: #800000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">sys_user</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">anyuser</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">sys_pass</span><span style="color: #000000;">=</span><span style="color: #800000;">'</span><span style="color: #800000;">anypass</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">html&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">&lt;body&gt;&lt;h1&gt;Object&nbsp;Moved&lt;/h1&gt;This&nbsp;object&nbsp;may&nbsp;be&nbsp;found&nbsp;&lt;a&nbsp;HREF="shuju.asp?err=<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #800000;">ok!&amp;amp;dizhi=../data_backup/zhk0432011-1-26.7055475.mdb"&gt;here&lt;/a&gt;.&lt;/body&gt;<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #800000;"></span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">tasklet</span><span style="color: #000000;">=</span><span style="color: #000000;">[]<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">backupTimes</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;in&nbsp;day&nbsp;每天备份次数</span><span style="color: #008000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;backup(outputfile):<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;params&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;urllib.urlencode({</span><span style="color: #800000;">'</span><span style="color: #800000;">login_name</span><span style="color: #800000;">'</span><span style="color: #000000;">:sys_user,&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">login_pass</span><span style="color: #800000;">'</span><span style="color: #000000;">:&nbsp;sys_pass,&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">submit.x</span><span style="color: #800000;">'</span><span style="color: #000000;">:&nbsp;</span><span style="color: #000000;">9</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">submit.y</span><span style="color: #800000;">'</span><span style="color: #000000;">:</span><span style="color: #000000;">9</span><span style="color: #000000;">})<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httplib.HTTPConnection(host)<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;headers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{</span><span style="color: #800000;">"</span><span style="color: #800000;">Content-type</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">application/x-www-form-urlencoded</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Accept</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">text/plain</span><span style="color: #800000;">"</span><span style="color: #000000;">}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn.request(</span><span style="color: #800000;">"</span><span style="color: #800000;">POST</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">"</span><span style="color: #800000;">/asp/huiyuan/login_check_gl.asp</span><span style="color: #800000;">"</span><span style="color: #000000;">,params,headers)<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conn.getresponse()<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;resp.status,resp.reason</span><span style="color: #008000;"><br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;resp.getheaders()</span><span style="color: #008000;"><br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cookie&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;resp.getheader(</span><span style="color: #800000;">'</span><span style="color: #800000;">set-cookie</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;resp.read()</span><span style="color: #008000;"><br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;'retry&nbsp;GET&nbsp;/'</span><span style="color: #008000;"><br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httplib.HTTPConnection(host)<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;headers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{</span><span style="color: #800000;">"</span><span style="color: #800000;">Content-type</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">application/x-www-form-urlencoded</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Accept</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">text/plain</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">Cookie</span><span style="color: #800000;">'</span><span style="color: #000000;">:cookie}<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn.request(</span><span style="color: #800000;">"</span><span style="color: #800000;">GET</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">"</span><span style="color: #800000;">/asp/admin/login_check001.asp</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">''</span><span style="color: #000000;">,headers)<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conn.getresponse()<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">sys.exit(0)</span><span style="color: #008000;"><br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;httplib.HTTPConnection(host)<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;headers&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{</span><span style="color: #800000;">"</span><span style="color: #800000;">Content-type</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">application/x-www-form-urlencoded</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Accept</span><span style="color: #800000;">"</span><span style="color: #000000;">:&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">text/plain</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">Cookie</span><span style="color: #800000;">'</span><span style="color: #000000;">:cookie}<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;conn.request(</span><span style="color: #800000;">"</span><span style="color: #800000;">GET</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">"</span><span style="color: #800000;">/asp/admin/backup.asp</span><span style="color: #800000;">"</span><span style="color: #000000;">,</span><span style="color: #800000;">''</span><span style="color: #000000;">,headers)<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;resp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conn.getresponse()<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;resp.status,resp.reason</span><span style="color: #008000;"><br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;html</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;&nbsp;resp.read()<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;re.search(</span><span style="color: #800000;">"</span><span style="color: #800000;">.*?/data_backup/(.*?\.mdb).*</span><span style="color: #800000;">"</span><span style="color: #000000;">,html)<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;backupfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">''</span><span style="color: #000000;"><br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;len(m.groups()):<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backupfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;m.groups()[0]<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;backupfile<br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">:<br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&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;">backup&nbsp;access&nbsp;failed!</span><span style="color: #800000;">'</span><span style="color: #000000;"><br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;False<br></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;-o&nbsp;wget.log</span><span style="color: #008000;"><br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;downloadurl</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">http://%s/asp/data_backup/%s&nbsp;&nbsp;-O&nbsp;%s&nbsp;</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(host,backupfile,outputfile)<br></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">print&nbsp;'try&nbsp;get&nbsp;%s&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">'%downloadurl</span><span style="color: #008000;"><br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">wget&nbsp;-c&nbsp;-t&nbsp;0&nbsp;%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">downloadurl<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;cmd<br></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;os.system(cmd)<br></span><span style="color: #008080;">66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;True<br></span><span style="color: #008080;">67</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">firsttime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;datetime.datetime.now()<br></span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">not</span><span style="color: #000000;">&nbsp;os.path.exists(</span><span style="color: #800000;">'</span><span style="color: #800000;">./backup</span><span style="color: #800000;">'</span><span style="color: #000000;">):<br></span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;os.mkdir(</span><span style="color: #800000;">'</span><span style="color: #800000;">backup</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">not</span><span style="color: #000000;">&nbsp;os.path.exists(</span><span style="color: #800000;">'</span><span style="color: #800000;">./sync</span><span style="color: #800000;">'</span><span style="color: #000000;">):<br></span><span style="color: #008080;">73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;os.mkdir(</span><span style="color: #800000;">'</span><span style="color: #800000;">sync</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">75</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;True:<br></span><span style="color: #008080;">76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;datetime.datetime.now()<br></span><span style="color: #008080;">77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">filename&nbsp;=&nbsp;"backup/%s_%s-%s_%s_%s_%s.bak"%(now.year,now.month,now.day,now.hour,now.minute,now.second)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">78</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;sync_hour</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(now.hour</span><span style="color: #000000;">/</span><span style="color: #000000;">int(</span><span style="color: #000000;">24</span><span style="color: #000000;">/</span><span style="color: #000000;">backupTimes))&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;int(</span><span style="color: #000000;">24</span><span style="color: #000000;">/</span><span style="color: #000000;">backupTimes)<br></span><span style="color: #008080;">79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">%s_%s-%s_%s_%s_%s.bak</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(now.year,now.month,now.day,sync_hour,0,0)&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">not</span><span style="color: #000000;">&nbsp;os.path.exists(</span><span style="color: #800000;">"</span><span style="color: #800000;">backup/</span><span style="color: #800000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">filename):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backup(</span><span style="color: #800000;">"</span><span style="color: #800000;">backup/</span><span style="color: #800000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">filename)<br></span><span style="color: #008080;">83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">7zip\\7z.exe&nbsp;a&nbsp;-t7z&nbsp;&nbsp;sync\\%s.7z&nbsp;backup\\%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(filename,filename)<br></span><span style="color: #008080;">84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;cmd<br></span><span style="color: #008080;">85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.system(cmd)&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(</span><span style="color: #000000;">10</span><span style="color: #000000;">)&nbsp;</span><span style="color: #008000;">#<br></span><span style="color: #008080;">89</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">90</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">91</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">92</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/socketref/aggbug/139285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2011-01-25 16:20 <a href="http://www.cppblog.com/socketref/archive/2011/01/25/139285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python @staticmethod @classmethod </title><link>http://www.cppblog.com/socketref/archive/2010/12/08/135795.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 08 Dec 2010 05:42:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/12/08/135795.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/135795.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/12/08/135795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/135795.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/135795.html</trackback:ping><description><![CDATA[1.static方法可以不要参数，和C／C＋＋，java里面的静态函数相似<br>2.普通对象函数至少需要一个self参数，该参数命名可以是&#8216;self&#8217;，也可以是其他。代表类实例对象<br>3.class方法至少需要一个cls参数，该参数命名可以是&#8216;cls&#8217;，也可以是其他。代表类对象<br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/135795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-12-08 13:42 <a href="http://www.cppblog.com/socketref/archive/2010/12/08/135795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>http Server 简单测试，返回图像数据</title><link>http://www.cppblog.com/socketref/archive/2010/11/19/134062.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Fri, 19 Nov 2010 01:57:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/11/19/134062.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/134062.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/11/19/134062.html#Feedback</comments><slash:comments>-2</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/134062.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/134062.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">################################</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;swMap&nbsp;Test&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;scott&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;2010.11.19</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;wallizard.vicp.net&nbsp;sw2us.com</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">################################</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">simplest&nbsp;http&nbsp;server&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;expose&nbsp;image&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #008000;">#<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;BaseHTTPServer,SocketServer,SimpleHTTPServer&nbsp;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;time,sys,os,os.path<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyThreadServer(SocketServer.ThreadingMixIn,&nbsp;BaseHTTPServer.HTTPServer):&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;"></span><span style="color: #800000;">'''</span><span style="color: #800000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #800000;">HTTP/1.1&nbsp;200&nbsp;OK<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #800000;">Cache-Control:&nbsp;private,&nbsp;max-age=30<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #800000;">Content-Type:&nbsp;text/html;&nbsp;charset=utf-8<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #800000;">Content-Encoding:&nbsp;gzip<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #800000;">Expires:&nbsp;Mon,&nbsp;25&nbsp;May&nbsp;2009&nbsp;03:20:33&nbsp;GMT<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #800000;">Last-Modified:&nbsp;Mon,&nbsp;25&nbsp;May&nbsp;2009&nbsp;03:20:03&nbsp;GMT<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #800000;">Vary:&nbsp;Accept-Encoding<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #800000;">Server:&nbsp;Microsoft-IIS/7.0<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #800000;">X-AspNet-Version:&nbsp;2.0.50727<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #800000;">X-Powered-By:&nbsp;ASP.NET<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #800000;">Date:&nbsp;Mon,&nbsp;25&nbsp;May&nbsp;2009&nbsp;03:20:02&nbsp;GMT<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #800000;">Content-Length:&nbsp;12173<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #800000;"></span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;"></span><span style="color: #800000;">'''</span><span style="color: #800000;"><br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #800000;">Pragma:no-cache<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #800000;">Cache-Control:no-cache<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #800000;"></span><span style="color: #800000;">'''</span><span style="color: #000000;"><br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyHander(SimpleHTTPServer.SimpleHTTPRequestHandler):<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,request,&nbsp;client_address,&nbsp;server):<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleHTTPServer.SimpleHTTPRequestHandler.</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,request,&nbsp;client_address,&nbsp;server)<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;do_GET(self):<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;self.headers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;open(</span><span style="color: #800000;">'</span><span style="color: #800000;">d:/nono.gif</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">rb</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;f.read()<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.close()<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.send_response(</span><span style="color: #000000;">200</span><span style="color: #000000;">)<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.send_header(&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">Server</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">swMapServer</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.date_time_string(time.time())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.send_header(</span><span style="color: #800000;">'</span><span style="color: #800000;">Date</span><span style="color: #800000;">'</span><span style="color: #000000;">,now)<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.send_header(</span><span style="color: #800000;">'</span><span style="color: #800000;">Content-Type</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">image/gif</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.send_header(</span><span style="color: #800000;">'</span><span style="color: #800000;">Content-Length</span><span style="color: #800000;">'</span><span style="color: #000000;">,len(image))<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.end_headers()<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.wfile.write(image)<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;run(server_class</span><span style="color: #000000;">=</span><span style="color: #000000;">MyThreadServer,handler_class</span><span style="color: #000000;">=</span><span style="color: #000000;">MyHander):<br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;server_address&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #800000;">''</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">8000</span><span style="color: #000000;">)<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;httpd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;server_class(server_address,&nbsp;handler_class)<br></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&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;">serve&nbsp;on&nbsp;</span><span style="color: #800000;">'</span><span style="color: #000000;">,server_address<br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;httpd.serve_forever()<br></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">run()</span></div>
<br><img src ="http://www.cppblog.com/socketref/aggbug/134062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-11-19 09:57 <a href="http://www.cppblog.com/socketref/archive/2010/11/19/134062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python编写同步游戏目录</title><link>http://www.cppblog.com/socketref/archive/2010/09/30/128107.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 29 Sep 2010 16:34:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/09/30/128107.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/128107.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/09/30/128107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/128107.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/128107.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 采用Ice编写的Rpc服务应用，endpoint部署在5173.com的游戏做单PC上,sync_server部署在游戏运维网管机器上。sync_server与endpoint是1对多的形态部署。某一款游戏做了修改或者逆向代码有了修改，通过sync_server将新增部分同步到几百台endpoint游戏主机。类能类似 EMC的 Networker 同步软件。文件校验使用md5通信接口定义sync....&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2010/09/30/128107.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/128107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-09-30 00:34 <a href="http://www.cppblog.com/socketref/archive/2010/09/30/128107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python开发Http代理服务器</title><link>http://www.cppblog.com/socketref/archive/2010/09/30/128105.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 29 Sep 2010 16:16:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/09/30/128105.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/128105.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/09/30/128105.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/128105.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/128105.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 之前开发酒店广告投放系统编写的Http代理服务程序，功能实现广告插播进Html DOM结构内。一般都是DIV被插入，当然包括script都是可以从数据库中动态获得。简单修改之后当做Http代理服务器程序，在浏览器中设置Http转发程序的Ip即可，只要代理程序的机器能上网，客户机便能上网（其中涉及Page gzip的工作有点麻烦）Code highlighting produced by Act...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2010/09/30/128105.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/128105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-09-30 00:16 <a href="http://www.cppblog.com/socketref/archive/2010/09/30/128105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>照片合并输出</title><link>http://www.cppblog.com/socketref/archive/2010/09/22/127351.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 22 Sep 2010 11:50:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/09/22/127351.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/127351.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/09/22/127351.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/127351.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/127351.html</trackback:ping><description><![CDATA[一个朋友经常碰到要将大批量的照片输出到写真机，就不停的将图片加载进photoshop，然后排版，效率够慢的，便写个脚本把这些工作简化了<br>config.txt配置信息<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">item_hspace</span><span style="color: #000000;">=</span><span style="color: #000000;">0.5</span><span style="color: #000000;"><br></span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">item_vspace</span><span style="color: #000000;">=</span><span style="color: #000000;">0.5</span><span style="color: #000000;"><br></span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">item_width&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">20</span><span style="color: #000000;">&nbsp;#15cm<br></span><span style="color: #008080;">4</span>&nbsp;<span style="color: #000000;">item_height&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">15</span><span style="color: #000000;"><br></span><span style="color: #008080;">5</span>&nbsp;<span style="color: #000000;">DPI</span><span style="color: #000000;">=</span><span style="color: #000000;">96</span><span style="color: #000000;"><br></span><span style="color: #008080;">6</span>&nbsp;<span style="color: #000000;">canvas_heigth</span><span style="color: #000000;">=</span><span style="color: #000000;">88</span><span style="color: #000000;">&nbsp;#200cm<br></span><span style="color: #008080;">7</span>&nbsp;<span style="color: #000000;">canvas_rotation</span><span style="color: #000000;">=</span><span style="color: #000000;">90</span><span style="color: #000000;">&nbsp;<br></span><span style="color: #008080;">8</span>&nbsp;<span style="color: #000000;">source&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;D:\共享\</span><span style="color: #000000;">2010.9.20</span><span style="color: #000000;">\小天鹅幼儿园小4班照片<br></span><span style="color: #008080;">9</span>&nbsp;<span style="color: #000000;">outfile</span><span style="color: #000000;">=</span><span style="color: #000000;">final2.tiff</span></div>
<br>main.py处理代码<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">-*-&nbsp;coding:utf-8&nbsp;-*-</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000;">#<br></span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">name:&nbsp;config.py</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">brief:</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;&nbsp;&nbsp;&nbsp;系统配置文件</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">author:&nbsp;scott</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000;">#<br></span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;os,sys,time,os.path,traceback<br></span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;zlib,binascii<br></span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;PIL,Image<br></span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;config<br></span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">DPI</span><span style="color: #000000;">=</span><span style="color: #000000;">96.0</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">POINTS_PER_METER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DPI</span><span style="color: #000000;">/</span><span style="color: #000000;">2.54</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">每米多少个像素</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">POINT_PER_CMETER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DPI</span><span style="color: #000000;">/</span><span style="color: #000000;">2.54</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;">ITEM_HSPACE</span><span style="color: #000000;">=</span><span style="color: #000000;">0<br></span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;">ITEM_VSPACE</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #000000;">ITEM_WIDTH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">照片的宽度</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">ITEM_HEIGTH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;0&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">照片宽度决定了高度</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">CANVAS_HEIGHT</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;0&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">画板高度,长度是无限制的</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">CANVAS_ROTATION&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">90</span><span style="color: #000000;">&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">最终输出照片进行旋转输出</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">conf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;config.SimpleConfig()<br></span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;">conf.open(</span><span style="color: #800000;">'</span><span style="color: #800000;">config.txt</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #000000;">DPI&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">DPI</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">96.0</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">ITEM_HSPACE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">item_hspace</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">0.5</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;POINT_PER_CMETER<br></span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;">ITEM_VSPACE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">item_vspace</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">0.5</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;POINT_PER_CMETER<br></span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #000000;">ITEM_WIDTH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">item_width</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">15</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;POINT_PER_CMETER<br></span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">ITEM_HEIGHT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">item_height</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">10</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;POINT_PER_CMETER<br></span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">CANVAS_HEIGHT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">canvas_heigth</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">200</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;POINT_PER_CMETER<br></span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">CANVAS_ROTATION&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">canvas_rotation</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">90</span><span style="color: #000000;">)&nbsp;<br></span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">ITEM_HSPACE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(ITEM_HSPACE)<br></span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">ITEM_VSPACE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(ITEM_VSPACE)<br></span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">ITEM_WIDTH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(ITEM_WIDTH)<br></span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">ITEM_HEIGHT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(ITEM_HEIGHT)<br></span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">CANVAS_HEIGHT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(&nbsp;CANVAS_HEIGHT)<br></span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;conf.getPropertyValueAsFloat(</span><span style="color: #800000;">'</span><span style="color: #800000;">canvas_rotation</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">90</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">rows&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;CANVAS_HEIGHT&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;(ITEM_HEIGHT</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_VSPACE)<br></span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">source&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValue(</span><span style="color: #800000;">'</span><span style="color: #800000;">source</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">final&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;conf.getPropertyValue(</span><span style="color: #800000;">'</span><span style="color: #800000;">outfile</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">files&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[]<br></span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">imgsize</span><span style="color: #000000;">=</span><span style="color: #000000;">[0,0]<br></span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;f&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;os.listdir(source):<br></span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;os.path.isdir(&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">%s/%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(source,f)):<br></span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Image.open(</span><span style="color: #800000;">"</span><span style="color: #800000;">%s/%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(source,f))<br></span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;imgfile.size<br></span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;size[0]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">size[</span><span style="color: #000000;">1</span><span style="color: #000000;">]:<br></span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;imgfile.rotate(</span><span style="color: #000000;">90</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgfile.save(</span><span style="color: #800000;">"</span><span style="color: #800000;">%s/%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(source,f))<br></span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;files.append(&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">%s/%s</span><span style="color: #800000;">"</span><span style="color: #000000;">%</span><span style="color: #000000;">(source,f))<br></span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">#</span><span style="color: #008000;">计算输出文件的大小</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">cols&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;len(files)</span><span style="color: #000000;">/</span><span style="color: #000000;">(rows)<br></span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">cols&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;int(cols)<br></span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;&nbsp;len(files)</span><span style="color: #000000;">%</span><span style="color: #000000;">(rows)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;0:<br></span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cols&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">1</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">CANVAS_WIDTH&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cols&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(ITEM_VSPACE</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_WIDTH)<br></span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">imgsize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(CANVAS_WIDTH,CANVAS_HEIGHT)<br></span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">imgcanvas&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;">,imgsize,</span><span style="color: #000000;">0xffffff</span><span style="color: #000000;">)<br></span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;CANVAS_WIDTH,CANVAS_HEIGHT<br></span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;cols,rows<br></span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;range(cols):<br></span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(ITEM_WIDTH</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_HSPACE)<br></span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;r&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;range(&nbsp;int(rows)):<br></span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;(ITEM_HEIGHT</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_VSPACE)<br></span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;len(files):<br></span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;files[0]<br></span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files.remove(file)<br></span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;">open&nbsp;file:</span><span style="color: #800000;">'</span><span style="color: #000000;">,file<br></span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Image.open(file)<br></span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;(x,y,x</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_WIDTH,y</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_HEIGHT)<br></span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgfile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;imgfile.resize((ITEM_WIDTH,ITEM_HEIGHT))<br></span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgcanvas.paste(imgfile,(x,y,x</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_WIDTH,y</span><span style="color: #000000;">+</span><span style="color: #000000;">ITEM_HEIGHT))<br></span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">imgcanvas.paste(imgfile,(x,y))</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br></span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;traceback.print_exc()<br></span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">sys.exit()</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;CANVAS_ROTATION:<br></span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">print</span><span style="color: #000000;">&nbsp;CANVAS_ROTATION<br></span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;imgcanvas&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;imgcanvas.rotate(CANVAS_ROTATION)<br></span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br></span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">imgcanvas.save(final)<br></span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/127351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-09-22 19:50 <a href="http://www.cppblog.com/socketref/archive/2010/09/22/127351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抓www.xunbao173.com的交易记录</title><link>http://www.cppblog.com/socketref/archive/2010/06/10/117598.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 10 Jun 2010 15:23:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/06/10/117598.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/117598.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/06/10/117598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/117598.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/117598.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 5173.com提出抓取同行交易系统的业务信息来做数据分析而提出这么个需求给我，花了1天用python完成Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;&nbsp;1&nbsp;#&nbsp;-*-&nbsp;coding:utf-8...&nbsp;&nbsp;<a href='http://www.cppblog.com/socketref/archive/2010/06/10/117598.html'>阅读全文</a><img src ="http://www.cppblog.com/socketref/aggbug/117598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-06-10 23:23 <a href="http://www.cppblog.com/socketref/archive/2010/06/10/117598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python::SocketServer</title><link>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 15 Feb 2010 15:42:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/107912.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2010/02/15/107912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/107912.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/107912.html</trackback:ping><description><![CDATA[缘于要做个http代理服务器的需求，开始琢磨SocketServer类，看看其有多优秀<br><br>BaseServer: 定义基础服务器接口，这些功能接口提供给子类继承。同时提供服务处理的骨架<br>&nbsp;&nbsp; serve_forever()&nbsp; 循环调用 handle_request()<br>&nbsp;&nbsp; handle_request()&nbsp; 调用子类的get_request() ，在tcpServer时实则进行accept()应答; 验证处理 verify_request();&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最终处理请求 process_request()，<br>&nbsp;&nbsp; verify_request()&nbsp;&nbsp; 虚函数 <br>&nbsp;&nbsp; process_request()&nbsp; 虚函数，这个函数并没有直接在BaseServer的子类TcpServer中被重载，而是在TcpServer的派生类中通过另一个父类来实<br>现，比如 ThreadingTCPServer的基类ThreadingMixIn.process_request()实现了此功能函数<br>&nbsp;&nbsp; finish_request(request, client_address) 执行一次完整的socket数据读入处理，如果是ThreadMixInTcpServer产生的request，这个方法内必须实行循环读取socket数据,直到socket关闭。(此处 request 就是 socket对象)<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;finish_request(self,&nbsp;request,&nbsp;client_address):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">"""</span><span style="color: #800000;">Finish&nbsp;one&nbsp;request&nbsp;by&nbsp;instantiating&nbsp;RequestHandlerClass.</span><span style="color: #800000;">"""</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.RequestHandlerClass(request,&nbsp;client_address,&nbsp;self)</span></div>
&nbsp;&nbsp; 在finish_request里面便将读取socket数据的任务扔给了RequestHandler去处理了，代码可以跳过去看了<br>##---------------------------------------------<br><br>TcpServer:&nbsp; tcp服务器<br>&nbsp;&nbsp; __init__(self, server_address, RequestHandlerClass) 需要提供服务侦听地址和请求处理类对象<br>&nbsp;&nbsp; server_bind() 绑定服务器地址<br>&nbsp;&nbsp; server_activate() 激活服务器<br>&nbsp;&nbsp; server_close()&nbsp; 关闭服务器 <br>&nbsp;&nbsp; fileno()&nbsp; 返回服务器socket的句柄fd编号<br>&nbsp;&nbsp; get_request() 接收应答accept()<br>&nbsp;&nbsp; close_request(request) 关闭socket,request即为socket对象<br>&nbsp;<br>三种输出处理方式: 阻塞方式、线程处理(ThreadingMixIn)、进程处理(ForkingMixIn)<br><br>ThreadingMixIn: 线程模型<br>&nbsp;&nbsp; process_request( request, client_address) 为请求的链接创建新的线程,在创建线程时直接指定线程入口和参数:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;threading<br>t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;threading.Thread(target&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.process_request_thread,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(request,&nbsp;client_address))<br></span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;self.daemon_threads:<br>&nbsp;&nbsp;t.setDaemon&nbsp;(</span><span style="color: #000000;">1</span><span style="color: #000000;">)</span></div>
&nbsp;&nbsp; process_request_thread() 线程处理socket入口，负责接收数据，代码实现有点绕，看看代码<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;process_request_thread(self,&nbsp;request,&nbsp;client_address):</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.finish_request(request,&nbsp;client_address)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.close_request(request)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">except</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.handle_error(request,&nbsp;client_address)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.close_request(request)</span></div>
&nbsp;&nbsp;&nbsp; ThreadingMixIn<span style="color: #000000;">其实就是线程代理</span>，还是调用finish_request()进入处理tcp数据的循环，处理完成便close_request()。但是finish_request和close_request并未在ThreadingMinxIn内定义，在哪里呢？ 通过研读ThreadingTcpServer,原来通过ThreadingTcpServer这个finish_request又跑回了BaseServer.finish_request()<br><br>ThreadingTCPServer(ThreadingMixIn, TCPServer) 装配成线程池处理的tcp服务器<br>&nbsp;&nbsp; <br><br>BaseRequestHandler:&nbsp; 请求处理基础对象，提供统一的行为接口实现处理socket数据。 BaseRequestHandler比较好玩，在构造函数内完成了所有的操作，见代码：
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self,&nbsp;request,&nbsp;client_address,&nbsp;server):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.request&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;request<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.client_address&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client_address<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.setup()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.handle()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.finish()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys.exc_traceback&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;None&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;Help&nbsp;garbage&nbsp;collection</span></div>
&nbsp;&nbsp; setup()对应的子类会进行初始化处理<br>&nbsp;&nbsp; self.handle()&nbsp; 直接调用子类的处理函数，可以参考 BaseHTTPRequestHandler(SocketServer.StreamRequestHandler)::handle()<br><br><br>StreamRequestHandler(BaseRequestHandler) 流式socket处理类<br>&nbsp;&nbsp; setup() 设置好socket对象和读写文件句柄 rfile/wfile<br><br><br>HTTPServer(SocketServer.TCPServer) http服务器<br><br>BaseHTTPRequestHandler(SocketServer.StreamRequestHandler) 流式的请求处理类 <br>&nbsp;&nbsp; handle() 处理入口，在基类BaseRequestHandle()的构造函数中直接调用<br>&nbsp;&nbsp; handle_one_request() 如果不是处理一次则返回false。接收一次socket数据，解析parse_request(),调用对应的do_xxx事件<br><br>python 的daemon线程：<br><span id="ContentBody" style="padding: 10px; display: block;">如果一个进程的主线程运行完毕而子线程还在执行的话，那么进程就不会退出，直到所有子线程结束为止，如何让主线程结束的时候其他子线程也乖乖的跟老大撤退呢？那就要把那些不听话的人设置为听话的小弟，使用线程对象的<font color="#99cc00">setDaemon()</font>方法，参数为<font color="#99cc00">bool</font>型。<font color="#99cc00">True</font>的话就代表你要听话，我老大（主线程）扯呼，你也要跟着撤，不能拖后腿。如果是<font color="#99cc00">False</font>的话就不用那么听话了，老大允许你们将在外军命有所不受的。需要注意的是<font color="#99cc00">setDaemon()</font>方法必须在线程对象没有调用<font color="#99cc00">start()</font>方法之前调用，否则没效果。</span><br>&nbsp;&nbsp; <br><br>     <img src ="http://www.cppblog.com/socketref/aggbug/107912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2010-02-15 23:42 <a href="http://www.cppblog.com/socketref/archive/2010/02/15/107912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python连接DB2</title><link>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Thu, 03 Jul 2008 17:28:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/55281.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2008/07/04/55281.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/55281.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/55281.html</trackback:ping><description><![CDATA[公司的项目中有访问DB2数据的需求，我以前也只是听说DB2有这么个咚咚，据说也是个恐龙级的数据库。以前也没有用过DB2 在c语言的接口(访问oracle我一直用oci),网上一兜，才发现DB2有JDBC的访问接口，c方面的很少。<br>项目的工期比较紧，同时我也不想花太多的时间研究数据库访问接口，所以在项目中许多模块都是用python编写，开发周期短，调试，跨平台也是很吸引人，所以就用python拉。在python.org一搜索，便找到了pydb2,OK! 马上下载pydb1.2，一解开压缩包，原来是原代码，只能编译拉。还好有编译脚本:), 运行setup.py install<br>出现以下异常:<br>Compiling under Visual Studio .NET v7 recieves the<br>following error: <br><br>_db2_module.c(1855) : error C2036: 'SQLPOINTER' :<br>unknown size<br><br>This can be resolved by casting to (SQLCHAR *) instead<br>of a (void *): <br><br>&lt; SQLPOINTER buf = (SQLPOINTER)((SQLCHAR<br>*)bs-&gt;buf + (bs-&gt;bufLen * idx));<br><br>发现原来SQLCHAR类型没有找到，没问题，找到_db2_module.c:1855行修改为：<br>SQLPOINTER buf = (SQLPOINTER)((void *)bs-&gt;buf +<br>(bs-&gt;bufLen * idx)); <br>再次 setup.py install<br>ok，编译成功，db2.py的模块也被拷贝得到 $PYTHONHOME/lib/site_pakages/下去了<br>然后安装db2 client runtime<br>这样就完成了pydb2的运行配置。然后就在odbc中配置一个dsn<br>测试以下代码：<br><br>import DB2<br>conn = DB2.connect(dsn='sample', uid='db2inst1', pwd='secret')<br>无异常表示成功连接上DB2<br>之后访问数据库只要遵循python DBI2.0的规范就可以拉！<br>生活在python世界是很快乐的事情！<br><br>*注意: python2.4的话必须用vc7.1编译pydb2的扩展模块，因为python2.4(win32)也是用vc7.1编译的<br><br><br><br><img src ="http://www.cppblog.com/socketref/aggbug/55281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2008-07-04 01:28 <a href="http://www.cppblog.com/socketref/archive/2008/07/04/55281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lua-快速阅读</title><link>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Mon, 12 May 2008 19:13:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/49689.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2008/05/13/49689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/49689.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/49689.html</trackback:ping><description><![CDATA[<br>table 是个怪物，有很多facets,类似array,map,struct,整个是个混合物，用起来也比较怪异。<br>t={1,2,3,a="gen",b=100}<br>t={[0]=1;["name"]="ultra"}<br>t.a, t.b , t[0] , t["name"]<br><br>表操作函数: <br>ipairs,pairs迭代函数<br>table.getn(t)&nbsp;&nbsp;  len of table<br><br>================================================================<br>function() 可以接受任意多的参数，如果实参数过多将丢弃，过少将默认设置为nil<br>同样可以返回多个参数<br>a,b=foo()<br><br>表作为参数传递到function<br>function rename( arg ) os.rename(arg.old,arg.new) end<br>rename{old="";new=""}<br><br>匿名函数(lambda in python )<br>foo = function(x) return x*2 end<br>局部函数 local f=function(x) ... end<br>================================================================<br>for n=start,end,step do ... end<br>while b do&nbsp;&nbsp; ... end<br>repeat do .... until<br><br>if then .. elseif then ...&nbsp; end;<br><br>有意思的语法表达式: <br>&nbsp;&nbsp;&nbsp; print a or b or c&nbsp;&nbsp; 如果a=false,尝试b...<br><br>注释: --&nbsp;&nbsp;&nbsp;&nbsp; --{ --}&nbsp; <br><br><br>字符串操作:&nbsp;&nbsp;&nbsp; .. 连接<br><br>==================================================<br>io 函数: <br>loadfile('test.lua')()&nbsp;&nbsp;&nbsp; execute external lua script<br>loadstring('print 100')()<br><br><br>代码测试: <br>=======================<br><span style="color: red;">c程序调用lua函数</span><br>c 程序:<br>void call_lua_func(){<br>&nbsp;&nbsp;&nbsp; lua_State *s = lua_open();<br>&nbsp;&nbsp;&nbsp; luaL_openlibs(s);<br>&nbsp;&nbsp;&nbsp; int c = lua_gettop(s);<br>&nbsp;&nbsp;&nbsp; luaL_dofile(s,"/nandflashpartition/test1.lua");<br>&nbsp;&nbsp;&nbsp; lua_getglobal(s,"add");<br>&nbsp;&nbsp;&nbsp; lua_pushnumber(s,0.25);<br>&nbsp;&nbsp;&nbsp; lua_pushnumber(s,8);<br>&nbsp;&nbsp;&nbsp; if( lua_pcall(s,2,1,0)){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout&lt;&lt; lua_tostring(s,-1)&lt;&lt;std::endl;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; double r;<br>&nbsp;&nbsp;&nbsp; r = lua_tonumber(s,-1);<br>&nbsp;&nbsp;&nbsp; lua_close(s);<br>}<br>lua程序:<br>function add(x,y)<br>&nbsp;&nbsp;&nbsp; return x*y<br>end<br>--------------------------------<br><span style="color: red;">lua访问c程序空间变量</span><br><br>1.定义变量student.h<br>extern char * gender;<br>extern int class_count;<br><br>2.创建pkg文件 student.pkg<br>$#include "student.h"<br>extern char * gender;<br>extern int class_count;<br><br>3.产生tolua++存根框架<br>tolua++ -o student.pkg<br><br>4.创建lua测试代码 call_c.lua<br>print(gender)<br>print(class_count)&nbsp; 访问c 空间的变量<br><br>5.c测试代码<br>char * gender;<br>int class_count;<br>void lua_call_c(){<br>&nbsp;&nbsp;&nbsp; int&nbsp; tolua_student_open (lua_State* tolua_S);<br>&nbsp;&nbsp;&nbsp; lua_State * s = lua_open();<br>&nbsp;&nbsp;&nbsp; luaopen_base(s);<br><br>&nbsp;&nbsp;&nbsp; gender ="my gender is male!";<br>&nbsp;&nbsp;&nbsp; class_count = 100;<br>&nbsp;&nbsp;&nbsp; tolua_student_open(s);<br>&nbsp;&nbsp;&nbsp; luaL_dofile(s,"/nandflashpartition/call_c.lua");<br>&nbsp;&nbsp;&nbsp; lua_close(s);<br>}<br><br>6.build &amp;&amp; test it!<br><br><br><br>   <img src ="http://www.cppblog.com/socketref/aggbug/49689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2008-05-13 03:13 <a href="http://www.cppblog.com/socketref/archive/2008/05/13/49689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>