| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #---------------------------------------------------------------------  | 
| #Writer £ºhch  | 
| #---------------------------------------------------------------------  | 
| # ½Å±¾ËµÃ÷---  | 
| # ¼ì²éÅäÖÃÎļþÊÇ·ñÕýÈ·  | 
| #---------------------------------------------------------------------  | 
| import md5  | 
| import os  | 
| import shutil  | 
|   | 
| resultPath = '.\HashCheckerResult'  | 
|   | 
| def RMHashCheckerResult():  | 
|     if os.path.isdir(resultPath):  | 
|         shutil.rmtree(resultPath)  | 
|   | 
| #¶ÁÈ¡×ܸÙ,ÓÃÓÚ½âÎöÀ©Õ¹ÎļþÃû  | 
| def CheckMD5IsOK():  | 
| #===============================================================================  | 
| #    È±Ê§Îļþ±¨´í£¬Ìí¼ÓÑéÖ¤ÎļþÊÇ·ñ´æÔÚ--2010-02-26  | 
| #===============================================================================  | 
|   | 
| #===============================================================================  | 
| #    if not os.path.isdir(resultPath):  | 
| #        os.mkdir(resultPath)  | 
| #    wfile = open(resultPath+'\\OK.txt', 'w')  | 
| #    wfile.close()  | 
| #    print 'Check File OK!'  | 
| #    return  | 
| # #===============================================================================  | 
| # #   2009.12.16 È¡ÏûMD5ÑéÖ¤£¬QAÐèÇó¡£  | 
| # #===============================================================================  | 
| #===============================================================================  | 
|           | 
|     curPath = os.getcwd() + '\\' + "GeneralProgramme.txt"  | 
|   | 
|     if not os.path.isfile( curPath ):  | 
|         raise Exception ( 'ÎÞ·¨·¢ÏÖ×ܸ٠= %s'%(curPath) )  | 
|       | 
|     file = open( curPath , 'r' )  | 
|       | 
|     #¶ÁÈ¡Êý¾Ý  | 
|     data = [ line.split('\t')[:3] for line in file.readlines() ]  | 
|       | 
|     file.close()  | 
|       | 
|     if not os.path.isdir(resultPath):  | 
|         os.mkdir(resultPath)  | 
|           | 
|     if not data:  | 
|         wfile = open(resultPath+'\\OK.txt', 'w')  | 
|         wfile.close()  | 
|         print 'Check File OK!'  | 
|         return  | 
|       | 
|     #ɾ³ýµÚÒ»ÐÐ×¢ÊÍÁÐ  | 
|     data.pop( 0 )  | 
|     wholeStr = ''  | 
|     count = 0  | 
|     allCount = len(data)  | 
|   | 
| #ÑéÖ¤ÎļþÊÇ·ñ´æÔÚ  | 
|     for dataList in data:  | 
|         wholeStr = CheckFilePath(os.getcwd(), dataList, wholeStr)  | 
|         count += 1  | 
|         print 'Checking File: %s/%s'%(count,allCount)  | 
|   | 
|   | 
| #===============================================================================  | 
| #    ÑéÖ¤MD5  | 
| #    for dataList in data:  | 
| #        wholeStr = compareMD5(os.getcwd(), dataList, wholeStr)  | 
| #        count += 1  | 
| #        print 'Checking File: %s/%s'%(count,allCount)  | 
| #===============================================================================  | 
|       | 
|     if not wholeStr:  | 
|         wfile = open(resultPath+'\\OK.txt', 'w')  | 
|         wfile.close()  | 
|         print 'Check File OK!'  | 
|     else:  | 
|         wfile = open(resultPath+'\\Diff.txt', 'w')  | 
|         wfile.write(wholeStr + '\n')  | 
|         wfile.close  | 
|         print 'Check File Faile!'  | 
|     return  | 
|   | 
| #ÑéÖ¤ÎļþÊÇ·ñ´æÔÚ  | 
| def CheckFilePath(path, curList, wholeStr):  | 
|     tmpPath = path + curList[1]+'.txt'  | 
| #    print tmpPath  | 
|     if not os.path.exists(tmpPath):  | 
|         wholeStr += (tmpPath + '\n')  | 
|   | 
|     return wholeStr  | 
|   | 
| #ÑéÖ¤MD5  | 
| def compareMD5(path, curList, wholeStr):  | 
|     tmpPath = path + curList[1]+'.txt'  | 
|     try:  | 
|         rfile = open( tmpPath , 'rb' )  | 
|         txtStr = rfile.read()  | 
|         rfile.close()  | 
|     except:  | 
|         txtStr = 'FK'  | 
|       | 
|     md5Src = md5.md5(txtStr).hexdigest()  | 
|   | 
|     #ÎļþÖеÄMD5  | 
|     md5Dst = curList[2]  | 
|       | 
|     if md5Src != md5Dst:  | 
|         wholeStr += (tmpPath + '\n')  | 
|       | 
|     return wholeStr  | 
|           | 
| def main():  | 
|     print 'Check Config File...'  | 
|     RMHashCheckerResult()  | 
|     CheckMD5IsOK()  | 
|       | 
|       | 
| if __name__ == '__main__':  | 
|     main() |