今天早上幫同事寫了腳本,大致功能:從文本中讀取域名,加密存儲成按照自己定義的格式。但是一個簡單的代碼居然出現了錯誤。初始的代碼如下:
# 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)
最終我們看到結果輸出正常了。

