首页 > 编程 > Python > 正文

python 照片文件名分类

2019-11-08 03:11:06
字体:
来源:转载
供稿:网友

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表