| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #×÷Õß : eggxp  | 
|   | 
| import os  | 
| import struct  | 
| import string  | 
| import math  | 
| import datetime  | 
| import subprocess  | 
| import traceback  | 
| import base64  | 
|   | 
| BASE64_ENCODE_CNT = 3  | 
| XOR_KEY = 151  | 
| def Decrypt(psw):  | 
|     ret = ""  | 
|     try:  | 
|         for i in range(0,BASE64_ENCODE_CNT):  | 
|             psw = base64.decodestring(psw)  | 
|     except:  | 
|         ret = traceback.format_exc()  | 
|         return False,ret  | 
|       | 
|     for i in psw:  | 
|         ret += chr(ord(i)^XOR_KEY)  | 
|     return True, ret  | 
|   | 
| #Ö´ÐÐcmdÖ¸Áî  | 
| def RunCmd(curCmd):  | 
|     pipe = subprocess.Popen(['cmd', ""], shell = False,  | 
|                                  stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE)  | 
|     pipe.stdin.write('%s\n'%curCmd)  | 
|     pipe.stdin.close()  | 
|     retStr = pipe.stdout.read()  | 
|     retStr += pipe.stderr.read()  | 
|     print retStr  | 
|     return retStr  | 
|   | 
|   | 
| #È¡µÃ´úÂëÖÐÕæÊµµÄ×Ö·û´®£¨Èç²ÎÊýsrcStrÊÇ'\n',»áµÃµ½»Ø³µ·û£©  | 
| def GetCodeStr(srcStr):  | 
|     desStr = srcStr.replace("'", "\\'")  | 
|     cmd = "desStr='" + desStr + "'"  | 
|     exec(cmd)  | 
|     return desStr   | 
|   | 
|   | 
| #pythonдÎļþ:  | 
| #    f = file('c:\\fuck.txt', 'a')  | 
| #    f.write(mapObsData)  | 
|   | 
| #µÈ´ýÊäÈë: raw_input()  | 
|   | 
| #´´½¨Socket  | 
| #s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)  | 
| #s.bind(('192.168.0.81', 6112))  | 
| #s.listen(1)  | 
|   | 
| #»ñµÃ×ÓĿ¼:  | 
| #os.path.abspath  | 
|   | 
| #µÈ´ýÊäÈë:  | 
| #raw_input()  | 
|   | 
| #µÃµ½±¾Ä¿Â¼:  | 
| #os.getcwd()  | 
|   | 
| #µÃµ½²ÎÊý:  | 
| #os.sys.argv  | 
|   | 
| #µÃµ½python·¾¶  | 
| #os.sys.executable  | 
|   | 
| #ÔËÐÐÍⲿÎļþ/½áÊøÍⲿÎļþ  | 
| #processID = os.spawnl(os.P_NOWAIT, pythonPath, '-p', os.path.join(curPath, 'test.py'))  | 
| #win32api.TerminateProcess(processID, 0)  | 
|   | 
|   | 
| #pythonµÄ¶ÁÈ¡/дÈë¿â  | 
|   | 
| #------------------------¶ÁÈ¡   | 
| def ReadBYTE(buf, pos):  | 
|     curValue = struct.unpack_from('B', buf, pos)  | 
|     pos += 1  | 
|     return curValue[0], pos  | 
|   | 
| def ReadWORD(buf, pos):  | 
|     curValue = struct.unpack_from('H', buf, pos)  | 
|     pos += 2    | 
|     return curValue[0], pos  | 
|   | 
| def ReadDWORD(buf, pos):  | 
|     curValue = struct.unpack_from('I', buf, pos)    | 
|     pos += 4  | 
|     return curValue[0], pos  | 
|   | 
| def ReadFloat(buf, pos):  | 
|     curValue = struct.unpack_from('f', buf, pos)    | 
|     pos += 4  | 
|     return curValue[0], pos  | 
|   | 
| def ReadDouble(buf, pos):  | 
|     curValue = struct.unpack_from('d', buf, pos)    | 
|     pos += 8  | 
|     return curValue[0], pos  | 
|   | 
| def ReadString(buf, pos, _len):  | 
|     curValue = struct.unpack_from('%ds'%_len, buf, pos)  | 
|     pos += _len    | 
|     return curValue[0], pos  | 
|   | 
|   | 
| #----------------------дÈë  | 
| def WriteBYTE(buf, value):  | 
|     buf += struct.pack('B', value)  | 
|     return buf  | 
|   | 
| def WriteWORD(buf, value):  | 
|     buf += struct.pack('H', value)  | 
|     return buf  | 
|   | 
| def WriteDWORD(buf, value):  | 
|     buf += struct.pack('I', value)  | 
|     return buf  | 
|   | 
| def WriteFloat(buf, value):  | 
|     buf += struct.pack('f', value)  | 
|     return buf  | 
|   | 
| def WriteDouble(buf, value):  | 
|     buf += struct.pack('d', value)  | 
|     return buf  | 
|   | 
| def WriteString(buf, len, value):  | 
|     buf += struct.pack('%ds'%len, value)  | 
|     return buf  | 
|   | 
| def GetDistance(srcX, srcY, destX, destY):  | 
|     return math.sqrt(pow(srcX - destX, 2) + pow(srcY - destY, 2))  | 
|       | 
| def MovePos(srcX, srcY, destX, destY, curMoveDist):  | 
|     if curMoveDist == 0:  | 
|         return  srcX, srcY  | 
|       | 
|     totalDist = GetDistance(srcX, srcY, destX, destY)  | 
|     if totalDist == 0:  | 
|         return  srcX, srcY  | 
|       | 
|     resultX = curMoveDist / float(totalDist) * (destX - srcX) + srcX  | 
|     resultY = curMoveDist / float(totalDist) * (destY - srcY) + srcY  | 
|     return resultX, resultY   | 
|       | 
|   | 
| ##²âÊÔ´úÂë:  | 
| #strs = 'ÃÀÏãÊÇÖí'  | 
| #buf = ''  | 
| #buf = WriteString(buf, len(strs), strs)  | 
| #value, pos = ReadString(buf, 0, len(strs))  | 
| #print value  | 
|   | 
| #»ñµÃµ±Ç°ÏµÍ³Ê±¼ä  | 
| def GetCurrentDataTimeStr():  | 
|     curTime = datetime.datetime.today()  | 
|     curTimeStr = str(curTime)  | 
|     curTimeStr = curTimeStr.split(".")[0]  | 
|     return curTimeStr  | 
|   | 
| #»ñµÃϵͳʱ¼ä(²ÎÊý -> Ê±¼äÁбí)  | 
| def GetDateTimeByStr(timeStr):  | 
|     timeStr = timeStr.split(".")[0]  | 
|     return  datetime.datetime.strptime(timeStr, "%Y-%m-%d %H:%M:%S")  | 
|       | 
|       | 
|       | 
| #×Ö·û´®×ª»»ÎªÕûÐÍ, Èç¹û²»ÄÜת»», ·µ»ØÄ¬ÈÏÖµ  | 
| def ToIntDef(input, defValue = 0):  | 
|     try:  | 
|         result = int(input)  | 
|         return result  | 
|     except ValueError:  | 
|         return defValue  | 
|       | 
| #16½øÖÆÑÕɫת»»  | 
| #"#FFFFFF"--"255,255,255"  | 
| def HcToSc(h):  | 
|     h="0x"+h[1:7]  | 
|     red=string.atoi(h[:2]+h[2:4], base=16)  | 
|     green=string.atoi(h[:2]+h[4:6], base=16)  | 
|     blue=string.atoi(h[:2]+h[6:8], base=16)  | 
|     cStr=str(red)+","+str(green)+","+str(blue)  | 
|     return cStr  | 
|   | 
| #"255,255,255"--"#FFFFFF"  | 
| def ScToHc(s):  | 
|     red=hex(string.atoi(s.split(",")[0]))[2:]  | 
|     green=hex(string.atoi(s.split(",")[1]))[2:]  | 
|     blue=hex(string.atoi(s.split(",")[2]))[2:]  | 
|     hStr="#"+str(red+green+blue)  | 
|     return hStr  | 
|   | 
| #16½øÖÆ×ª»»  | 
| #"0xFFFFFF"--"255,255,255"  | 
| def HdToSd(h):  | 
|     red=string.atoi(h[0:2]+h[2:4], base=16)  | 
|     green=string.atoi(h[0:2]+h[4:6], base=16)  | 
|     blue=string.atoi(h[0:2]+h[6:8], base=16)  | 
|     cStr=str(red)+","+str(green)+","+str(blue)  | 
|     return cStr  | 
|   | 
| #"255,255,255"--"0xFFFFFF"  | 
| def SdToHd(s):  | 
|     red=hex(string.atoi(s.split(",")[0]))[2:]  | 
|     green=hex(string.atoi(s.split(",")[1]))[2:]  | 
|     blue=hex(string.atoi(s.split(",")[2]))[2:]  | 
|     hStr="0x"+str(red+green+blue)  | 
|     return hStr  | 
|   | 
| #Ìáʾ³ýÁã´íÎóµÄEVAL  | 
| def SafeEval(value):  | 
|     try:  | 
|         return eval(value)  | 
|     except ZeroDivisionError:  | 
|         return "Division is Zero"  | 
|       | 
| def GetPercent(value1, value2):  | 
|     if value2 == 0:  | 
|         return 0  | 
|     return int(float(value1) / float(value2) * 100)  | 
|   | 
| ##Éú³ÉÖ¸¶¨Îļþ£¨Èçpar£ºr'E:\¿ª·¢°æ±¾\Data\logo\formName1.log'£©  | 
| #def MakeAppointFile(par):  | 
| #    dir = os.path.dirname(par)  # »ñµÃÎļþĿ¼  | 
| #    os.makedirs(dir)  # ´´½¨¶à¼¶Ä¿Â¼  | 
| #    file = open(os.path.basename(par),'w')  | 
| #    file.close()  | 
| #  | 
| ##ÔÚÖ¸¶¨Ä¿Â¼¸ù¾Ýµ±Ç°Ê±¼äÉú³ÉÐÂĿ¼£¨Èçpar£ºr'E:\¿ª·¢°æ±¾\Data\logo'£©  | 
| #def MakeCurTimeDir(par):  | 
| #    if not os.path.exists(par):  # ´«½øÀ´µÄĿ¼²»´æÔÚ  | 
| #        return  | 
| #    path=par+'\\'+str(datetime.datetime.today()).split()[0]  | 
| #    if not os.path.exists(path):  # Îļþ¼ÐÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨  | 
| #        os.mkdir(path)  # ´´½¨Îļþ¼Ð  | 
|           | 
| #Éú³ÉÖ¸¶¨Ä¿Â¼£¨Èçpar£ºr'E:\¿ª·¢°æ±¾\Data\logo'£©  | 
| def MakeAppointDir(par):  | 
|     if not isinstance(par,str):  | 
|         return  | 
|     pathList=par.split('\\')  | 
|     path=pathList[0]  | 
|     for i in range(1,len(pathList)):  | 
|         path+='\\'+pathList[i]  | 
|         if not os.path.exists(path):  # Îļþ¼ÐÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨  | 
|             os.mkdir(path)  # ´´½¨Îļþ¼Ð  | 
|                   | 
| #Éú³ÉÖ¸¶¨Îļþ£¨Èçpar£ºr'E:\¿ª·¢°æ±¾\Data\logo\formName1.log'£©  | 
| def MakeAppointFile(par):  | 
|     if not isinstance(par,str):  | 
|         return  | 
|     pathList=par.split('\\')  | 
|     path=pathList[0]  | 
|     for i in range(1,len(pathList)):  | 
|         path+='\\'+pathList[i]  | 
|         if i==len(pathList)-1:  | 
|             file=open(path,'w')  | 
|             file.close()  | 
|         else:  | 
|             if not os.path.exists(path):  # Îļþ¼ÐÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨  | 
|                 os.mkdir(path)  # ´´½¨Îļþ¼Ð  | 
|   | 
| #ÔÚÖ¸¶¨Ä¿Â¼¸ù¾Ýµ±Ç°Ê±¼äÉú³ÉÐÂĿ¼£¨Èçpar£ºr'E:\¿ª·¢°æ±¾\Data\logo'£©  | 
| def MakeCurTimeDir(par):  | 
|     if not os.path.exists(par):  # ´«½øÀ´µÄĿ¼²»´æÔÚ  | 
|         return  | 
|     path=par+'\\'+str(datetime.datetime.today()).split()[0]  | 
|     if not os.path.exists(path):  # Îļþ¼ÐÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò´´½¨  | 
|         os.mkdir(path)  # ´´½¨Îļþ¼Ð  | 
|   | 
| #µÃµ½Ìæ»»ºóµÄ×Ö·û´®£¨²ÎÊý£ºstringÊÇÐèÒªÌæ»»µÄ×Ö·û´®£»varlistΪ²»¶¨²Î£¬ÎªÌæ»»ÄÚÈÝ£©  | 
| def GetReplaceString(string,*varlist):  | 
|     if '%' not in string:  | 
|         return string  | 
|     repalceCount = len(varlist)  # Ìæ»»´ÎÊý  | 
|     newStr = string  | 
|     if '%%' in string:  | 
|         newStr = string.replace('%%','')  # È¥³ý×Ö·û´®strÄÚµÄ'%%'  | 
|     needReplaceCount = newStr.count('%')  # ×Ö·û´®newStrÄÚµÄ'%'¸öÊý,¼´ÐèÒªÌæ»»µÄ´ÎÊý  | 
|     if repalceCount < needReplaceCount:  | 
|         tempList = list(varlist)  | 
|         for i in range(needReplaceCount-repalceCount):  | 
|             tempList.append(0)  | 
|         replaceTuple= tuple(tempList)  | 
|         #¸æËßµ÷ÓÃÕߣ¬²ÎÊý´«ÉÙÁË  | 
|         return 'func:GetReplaceString();error:the parameter lack'  | 
| #        return string%replaceTuple  | 
|           | 
|     replaceTuple = tuple(varlist[:needReplaceCount])  | 
|     return string%replaceTuple  | 
|   | 
| def EncodingToUnicode(srcEncoding, input):  | 
|     try:  | 
|         result = unicode(input, srcEncoding)    #translate to utf-8  | 
|     except:  | 
| #        mylog.error('encode error!srcEncoding = %s input = %s'%(srcEncoding, repr(input)))  | 
|         return False, None  | 
|     return True, result  | 
|   | 
| def UnicodeToEncoding(dstEncoding, input):  | 
|     try:  | 
|         result = input.encode(dstEncoding)  | 
|     except:  | 
| #        mylog.error('encode error!dstEncoding = %s input = %s'%(dstEncoding, repr(input)))  | 
|         return False, None  | 
|     return True, result |