首先就是我为什么要写这个小工具。因为照片实在是太多了,当时手机拍下来了,就拷贝到一个文件夹,久而久之,文件夹里面已经有2000+个文件了,于是决定用python来吧照片按年分类(其实有很多办法,根本不用这么麻烦,但是这里也是熟悉一下python的文件操作)。
首先观察原始数据,发现无论是2013_10_31_11_33_49.jpg这种还是C360_2013-10-16-18-10-18-977_org.jpg还是IMG_20131009_072210.jpg,文件名总是有个时间,我是2013年上的大学,然后在2013年才有了手机,所以,手机的照片最早就是在2013年记录的,考虑到现在是2017年,所以先建立了 2013 - 2017几个文件夹((lll¬ω¬) 快成了半手动了,,,已经开始背离了最初的目的),然后发现python的os库有个listdir可以列出来文件名。如图。。。
然后再借助python文件操作的库:
目录操作:os.mkdir("file") 创建目录复制文件:shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录复制文件夹:shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在重命名文件(目录)os.rename("oldname","newname") 文件或目录都是使用这条命令移动文件(目录)shutil.move("oldpos","newpos") 删除文件os.remove("file")删除目录os.rmdir("dir")只能删除空目录shutil.rmtree("dir") 空目录、有内容的目录都可以删转换目录os.chdir("path") 换路径
嗯是否感到很容易了呢?
附代码:
import os,shutills = os.listdir('./Camera')PRint len(ls)for i in (ls): if i.find("2017")!=-1: shutil.move("./Camera/"+i,"./2017/"+i) elif i.find("2016")!=-1: shutil.move("./Camera/"+i,"./2016/"+i) elif i.find("2015")!=-1: shutil.move("./Camera/"+i,"./2015/"+i) elif i.find("2014")!=-1: shutil.move("./Camera/"+i,"./2014/"+i) elif i.find("2013")!=-1: shutil.move("./Camera/"+i,"./2013/"+i) else: shutil.move("./Camera/"+i,"./other/"+i)print "Finish"但是,还有一个问题,就是我强调过,这是手机的照片的命名方式,那么,相机的呢?是这个样的:
以及这样的:
那么应该如何处理呢?照片其实都带有一个exif信息,里面记录了拍照时间,相机参数,照片参数,作者信息等等。根据这个信息,也能进行一个分类,等有时间了在搞一搞。
PS:想文件名就带有时间信息的,完全可以在window中打开到那个文件夹,搜索年份,然后Ctrl+A 就Ok了。。。
新闻热点
疑难解答