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