题目要求
阿英的租车公司最近陷入一场车辆纠纷,为了找到出租前的车况照片,阿英需要快速找到2015年10月拍摄的车况照片,复制照片到2015年文件夹并发给法务。
所有照片路径:/Users/taxi/照片
找到2015年的照片复制到:/Users/taxi/2015年
注意:在课程中我们学习了文件移动函数shutil.move(),这里我们需要借助shutil模块其他功能复制文件
思路:
1、 导入os、ezexif、shutil模块。
2、将要找照片文件路径 /Users/taxi/照片 赋值给变量path,使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量fileNames
3、使用for循环遍历所有文件(夹),使用os.path.join()函数拼接查找照片路径,并赋值给变量filePath
4、使用ezexif.process_file()获取exif信息,并赋值给exifInfo。使用exifInfo['EXIF DateTimeOriginal']获取拍摄时间,并赋值给takeTime。使用split()通过空格分隔成拍摄日期和拍摄时间,并赋值给takeTimeParts。
5、分隔后的字符串列表第一个元素就是拍摄日期,赋值给变量photoDate,再把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts,分隔后的字符串列表第一个元素就是拍摄年份,赋值给变量year,分隔后的字符串列表第二个元素就是拍摄月份,赋值给变量month
6、使用if找到同时满足拍摄年份为2015年,拍摄月份为10月的照片,使用os.path.join()函数拼接2015年10月的照片路径 '/Users/taxi/2015年',并赋值给变量targetPath,使用shutil.copy()复制照片到目标文件夹中
提示:
shutil.copy()复制一个文件到指定目录下
# 使用import导入shutil模块
import shutil
# 将原文件路径赋值给oldPath
oldPath = '/Users/desktop/old/test.jpg'
# 将复制后移动的路径赋值给newPath
newPath = '/Users/desktop/new/text.jpg'
# 使用shutil.copy()将原路径文件复制存储到目标路径下
shutil.copy(oldPath, newPath)
解析:
Step.1
导入os、ezexif、shutil模块。
# TODO 使用import导入os模块
import os
# TODO 使用import导入ezexif模块
import ezexif
# TODO 使用import导入shutil模块
import shutil
Step.2
将要找照片文件路径 /Users/taxi/照片 赋值给变量path,使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量fileNames
# TODO 将要找照片文件路径 /Users/taxi/照片 赋值给变量path
path='/Users/taxi/照片'
# TODO 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量fileNames
fileNames=os.listdir(path)
Step.3
使用for循环遍历所有文件(夹),使用os.path.join()函数拼接查找照片路径,并赋值给变量filePath
# TODO 使用for循环遍历所有文件(夹)
for name in fileNames:
# TODO 使用os.path.join()函数拼接查找照片路径,并赋值给变量filePath
filePath=os.path.join(path, name)
Step.4
使用ezexif.process_file()获取exif信息,并赋值给exifInfo。使用exifInfo['EXIF DateTimeOriginal']获取拍摄时间,并赋值给takeTime。使用split()通过空格分隔成拍摄日期和拍摄时间,并赋值给takeTimeParts。
# 循环遍历所有文件(夹)名称
for item in allItems:
# TODO 使用os.path.join()函数合并生成每个文件(夹)的路径并赋值给itemPath
itemPath=os.path.join(dirPath, item)
Step.5
分隔后的字符串列表第一个元素就是拍摄日期,赋值给变量photoDate,再把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts,分隔后的字符串列表第一个元素就是拍摄年份,赋值给变量year,分隔后的字符串列表第二个元素就是拍摄月份,赋值给变量month
# TODO 使用ezexif.process_file()获取exif信息,并赋值给exifInfo
exifInfo=ezexif.process_file(filePath)
# TODO 使用exifInfo['EXIF DateTimeOriginal']获取拍摄时间,并赋值给takeTime
takeTime=exifInfo['EXIF DateTimeOriginal']
# TODO 使用split()通过空格分隔成拍摄日期和拍摄时间,并赋值给takeTimeParts
takeTimeParts=takeTime.split(" ")
# TODO 分隔后的字符串列表第一个元素就是拍摄日期,赋值给变量photoDate
photoDate=takeTimeParts[0]
# TODO 再把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts
photoDateParts=photoDate.split(":")
# TODO 分隔后的字符串列表第一个元素就是拍摄年份,赋值给变量year
year=photoDateParts[0]
# TODO 分隔后的字符串列表第二个元素就是拍摄月份,赋值给变量month
month=photoDateParts[1]
Step.6
使用if找到同时满足拍摄年份为2015年,拍摄月份为10月的照片,使用os.path.join()函数拼接2015年10月的照片路径 '/Users/taxi/2015年',并赋值给变量targetPath,使用shutil.copy()复制照片到目标文件夹中
# TODO 使用if找到同时满足拍摄年份为2015年,拍摄月份为10月的照片
if year=="2015" and month=="10":
# TODO 使用os.path.join()函数拼接2015年10月的照片路径 '/Users/taxi/2015年',并赋值给变量targetPath
targetPath=os.path.join( '/Users/taxi/2015年', name)
# TODO 使用shutil.copy()复制照片到目标文件夹中
shutil.copy(filePath, targetPath)
完整代码:
# TODO 使用import导入os模块
import os
# TODO 使用import导入ezexif模块
import ezexif
# TODO 使用import导入shutil模块
import shutil
# TODO 将要找照片文件路径 /Users/taxi/照片 赋值给变量path
path='/Users/taxi/照片'
# TODO 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量fileNames
fileNames=os.listdir(path)
# TODO 使用for循环遍历所有文件(夹)
for name in fileNames:
# TODO 使用os.path.join()函数拼接查找照片路径,并赋值给变量filePath
filePath=os.path.join(path, name)
# TODO 使用ezexif.process_file()获取exif信息,并赋值给exifInfo
exifInfo=ezexif.process_file(filePath)
# TODO 使用exifInfo['EXIF DateTimeOriginal']获取拍摄时间,并赋值给takeTime
takeTime=exifInfo['EXIF DateTimeOriginal']
# TODO 使用split()通过空格分隔成拍摄日期和拍摄时间,并赋值给takeTimeParts
takeTimeParts=takeTime.split(" ")
# TODO 分隔后的字符串列表第一个元素就是拍摄日期,赋值给变量photoDate
photoDate=takeTimeParts[0]
# TODO 再把拍摄日期通过冒号分隔,分成年、月、日三部分,赋值给变量photoDateParts
photoDateParts=photoDate.split(":")
# TODO 分隔后的字符串列表第一个元素就是拍摄年份,赋值给变量year
year=photoDateParts[0]
# TODO 分隔后的字符串列表第二个元素就是拍摄月份,赋值给变量month
month=photoDateParts[1]
# TODO 使用if找到同时满足拍摄年份为2015年,拍摄月份为10月的照片
if year=="2015" and month=="10":
# TODO 使用os.path.join()函数拼接2015年10月的照片路径 '/Users/taxi/2015年',并赋值给变量targetPath
targetPath=os.path.join( '/Users/taxi/2015年', name)
# TODO 使用shutil.copy()复制照片到目标文件夹中
shutil.copy(filePath, targetPath)