下载、修改、计算md5、替换
#!/usr/bin/python3
# encoding=utf8
import re
from urllib.request import urlretrieve
import os
import hashlib
import urllib.parse
total=0
count=0
def cbk(a, b, c):
per = 100.0 * a * b / c
if per > 100:
per = 100
print ('%.2f%%' % per)
openURL = open (r"./url.txt")
NewopenURL=open("./data/NewopenURL.txt","w+")
os.system("cp ./url.txt ./data/updateurl.txt")
for URL in openURL:
URL=URL.replace(",","\n")
NewopenURL.write (URL)
total=total+1
NewopenURL=open(r"./data/NewopenURL.txt")
for NewURL in NewopenURL:
count=count+1
NewURL=NewURL.rstrip("\n\r")
image_name = re.findall((re.compile(r'panda\/(.*)')),NewURL) #正则匹配获取url中图片名
print (image_name[0])
if os.path.exists('./old_img/'+str(image_name[0])):
pass
else:
urlretrieve("http://panda-img.oss-eu-central-1.aliyuncs.com/panda/"+urllib.parse.quote_plus(str(image_name[0])), './old_img/'+str(image_name[0]), cbk) #保存文件名到old_img 文件夹
image_ext = re.findall((re.compile(r'(\.[^.\\/:*?"<>|\r\n]+$)')),str(image_name[0])) #获取文件名中文件后缀名
with open("./old_img/"+str(image_name[0]), 'rb') as op: #计算文件的md5 值
old_data = op.read()
img_md5=hashlib.md5(old_data).hexdigest()
New_imagName= img_md5+str(image_ext[0]) #生成新的文件名
os.system('cp "./old_img/'+str(image_name[0])+ '" ./new_user_authentication_img/'+str(New_imagName)) #复制老图片到新的图片文件夹并命名为hash文件。
with open("./new_user_authentication_img/"+str(New_imagName), 'rb') as np: # 新文件与老文件进行md5对比,防止图片在整个过程中有所变更
new_data = np.read()
Newimg_md5=hashlib.md5(new_data).hexdigest()
if str(img_md5)==str(Newimg_md5):
print ("[Yes]新老文件一致"+"----第"+str(count)+"个图--总计:"+str(total)+"图")
else:
print ("[Err]文件出现异常")
update_url = open('./data/updateurl.txt','a+',encoding='utf-8')
os.system("sed -i '' s/'"+str(image_name[0])+"'/"+str(New_imagName)+"/g ./data/updateurl.txt") #替换文本中老的文件名为新的md5文件名。
update_url.close()
openID = open (r"./id.txt")
openupdateurl=open(r"./data/updateurl.txt")
finalsql=open("./user_authentication.sql","w+")
for id in openID:
id=id.rstrip("\n\r")
for updatesqlurl in openupdateurl:
updatesqlurl=updatesqlurl.rstrip("\n\r")
break
finalsql.write("update user_authentication set id_card_pic = '" +str(updatesqlurl)+ "' where id = "+id+";\n\r")
'''
update user_authentication set id_card_pic = '这里填新的url' where id = 这里填表格里的id;
update user_information set user_id_card_front = '这里填新的user_id_card_front的url' where user_info_id = 这里填表格里的user_info_id;
'''