最近在项目的时候遇到一个头大的问题,客户手中有份人员名单和人员照片。须要把人员信息数据库表照片信息补全,就是说要将人员照片和数据库人员一一对应。起初项目小伙伴说要手动录入写一个头像上传的程序一个个上传人员照片。几百号人的数听说多也很少说少也很多,若是所有手动录入不说麻烦的问题,可能中途还容易出错。我看了一眼人员照片文件是以人名命名,正好和数据库人员数据REALNAME字段相对应。其次重复人名并很少大概几个而已,能够以后作单独处理。人生苦短我用python,何须自找苦吃呢python
开始前须要先下载Image和Mysql支持库,Image库是须要下载安装PIL
PS:使用python2.7 pip安装mysql.connector库失败 最后去Oracle官网直接下载安装mysql.connector 瞬间爬坑 未知命令行安装为什么失败mysql
遍历文件执行代码(参考度娘)sql
#!/usr/bin/python #coding=utf-8 import os import os.path import time import mysql.connector import time rootdir = '/Users/julyyu/imgs/pics' # 指明被遍历的文件夹 conn=mysql.connector.connect(user='root',password='xxx',host='xxx',database='xxx') c = conn.cursor() for parent,dirnames,filenames in os.walk(rootdir): #三个参数:分别返回1.父目录 2.全部文件夹名字(不含路径) 3.全部文件名字 for filename in filenames: #输出文件信息 (name,extension) = filename.split(".") print "filenameonly is:" + name #输出图片名 if name: newname = str(int(time.time())) + ".jpg" #时间戳命名 print "newname is:" + newname os.rename(rootdir+"/"+filename , rootdir+"/"+newname) #对图片进行重命名 tempname = "/lzgl/" + newname #数据库存入的图片路径 query = "update t_users set IMGURL = '" + tempname + "' where REALNAME = '" + name + "'" c.execute(query) conn.commit() time.sleep(2) #防止时间戳重复 睡两秒 也能够睡0.5 这样处理会更快一些 c.close() conn.close()
以后又对图片进行了压缩操做 原图每张10+M的一寸照没法忍, 代码以下数据库
#!/usr/bin/python #coding:utf-8 from PIL import Image import os #图片压缩批处理 def compressImage(srcPath,dstPath): for filename in os.listdir(srcPath): #若是不存在目的目录则建立一个,保持层级结构 if not os.path.exists(dstPath): os.makedirs(dstPath) #拼接完整的文件或文件夹路径 srcFile=os.path.join(srcPath,filename) dstFile=os.path.join(dstPath,filename) print srcFile print dstFile #若是是文件就处理 if os.path.isfile(srcFile): #打开原图片缩小后保存,能够用if srcFile.endswith(".jpg")或者split,splitext等函数等针对特定文件压缩 sImg=Image.open(srcFile) w,h=sImg.size print w,h dImg=sImg.resize((w/2,h/2),Image.ANTIALIAS) #设置压缩尺寸和选项,注意尺寸要用括号 dImg.save(dstFile) #也能够用srcFile原路径保存,或者更改后缀保存,save这个函数后面能够加压缩编码选项JPEG之类的 print dstFile+" compressed succeeded" #若是是文件夹就递归 if os.path.isdir(srcFile): compressImage(srcFile,dstFile) if __name__=='__main__': compressImage("/Users/julyyu/imgs/tempa","/Users/julyyu/imgs/temps") #压缩前的文件路径和压缩后的文件路径
http://blog.csdn.net/u012234115/article/details/50248409python2.7