#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#×÷Õß : eggxp
|
|
import os
|
import struct
|
import string
|
import math
|
import datetime
|
import subprocess
|
|
|
#Ö´ÐÐ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
|