首先就是我为什么要写这个小工具。因为照片实在是太多了,当时手机拍下来了,就拷贝到一个文件夹,久而久之,文件夹里面已经有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,shutil
ls = 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了。。。