今天早上幫同事寫了腳本,大致功能:從文本中讀取域名,加密存儲成按照自己定義的格式。但是一個簡單的代碼居然出現了錯誤。初始的代碼如下:
# coding:utf-8 import hashlib import base64 # 使用MD5加密字符串 def entry_md5(text): md5_object = hashlib.md5() md5_object.update(text) test = md5_object.hexdigest().upper() return test def write_file(url, entry_code): # 前五位 code = '[{}]'.format(entry_code) # url加密 ob = 'v={}|t=w|a=k|'.format(url) encode = base64.b64encode(ob) final_code = 'object="{}"'.format(encode) with open('3.txt', 'a+') as f: f.writelines(code + '\n' + final_code + '\n') with open('2.txt', 'r') as f: for line in f.readlines(): line = line.strip() line = line.lstrip() url_domain = line.split('.') if len(url_domain) > 2: fin_domain = url_domain[1] else: fin_domain = url_domain[0] text2 = entry_md5(line.strip()) # 獲取前五位數字 text3 = entry_md5(text2) text4 = text3[0:5] write_file(fin_domain, text4)
但是在同事那邊驗證失敗了。起始文件我是用set(list)一個列表。但是在minergate這里出錯了。通過對line輸出
其中我已經對line兩邊去掉空格,結果在結果集中還是出現空格。一番折騰后,發現我在起始文件minergrate處於頭部,會加入utf8編碼。需要把編碼去掉。
# coding:utf-8 import hashlib import base64 import codecs # 使用MD5加密字符串 def entry_md5(text): md5_object = hashlib.md5() md5_object.update(text) test = md5_object.hexdigest().upper() return test def write_file(url, entry_code): # 前五位 code = '[{}]'.format(entry_code) # url加密 ob = 'v={}|t=w|a=k|'.format(url) encode = base64.b64encode(ob) final_code = 'object="{}"'.format(encode) with open('3.txt', 'a+') as f: f.writelines(code + '\n' + final_code + '\n') with open('2.txt', 'r') as f: for line in f.readlines(): line = line.strip() line = line.lstrip() line = line.replace(codecs.BOM_UTF8, '') url_domain = line.split('.') if len(url_domain) > 2: fin_domain = url_domain[1] else: fin_domain = url_domain[0] text2 = entry_md5(line.strip()) # 獲取前五位數字 if 'minergate' in line: print type(line), len(line) print line.split('minergate') print len('minergate.com') print line text3 = entry_md5(text2) print(text3) text4 = text3[0:5] print(text4) #write_file(fin_domain, text4)
最終我們看到結果輸出正常了。