我的程序应该从给定的路径开始,然后通过它和它的子目录寻找jpegs并按捕获日期组织它们。我的程序在试图打开子目录中的文件时出现错误。它声明文件无法找到,当我开始打印当前目录时,我看到它不在子目录中。我的代码和错误如下。我怎样才能让os.walk变成下一个子目录?由于如何使os.walk改变当前目录
import os
import exifread
from datetime import datetime
class Image(object):
name = ""
dateTakem = ""
# The class "constructor" - It's actually an initializer
def __init__(self, name, dateTaken):
self.name = name
self.dateTaken = dateTaken
def makeImage(name, dateTaken):
img = Image(name, dateTaken)
return img
def formatDateTime(imageDt):
d = datetime.strptime(imageDt, '%Y:%m:%d %H:%M:%S')
dateStr = d.strftime('%Y:%m:%d')
return dateStr
#path = raw_input("Please enter path name: ")
path="/Users/Me/Pictures/Litmas"#For faster testing
if not os.path.exists(path):
print ("Input path does not exist. Path is being created..")
try:
os.makedirs(path)
except (IOError, OSError) as exception:
print ("Path could not be created")
else:
print ("Success! Path has been created")
os.chdir(path)
count=0
unique=0
uniList=[]
imgList=[]
cwd = os.getcwd()
print (cwd)
for (dirname, dirs, files) in os.walk('.', topdown=False):
imgList[:]=[]
uniList[:]=[]
print (imgList)
print (uniList)
for filename in files:
#Checks if it is a JPEG
if filename.endswith('.jpg') or filename.endswith('.JPG') or filename.endswith('.JPEG') or filename.endswith('.jpeg'):
print ("\n"+filename)
#Adds 1 for every picture processed
count+=1
cwd = os.getcwd()
print (cwd)
#opens jpeg for exifread
f = open(filename, 'rb')
#Gets all the tags needed
tags = exifread.process_file(f, details=False)
#Goes through tags to find date captured
for tag in tags.keys():
#Converts date object to string
dtStr=str(tags['EXIF DateTimeOriginal'])
#Strips time so it is just date
fDate = formatDateTime(dtStr)
fDate=fDate.replace(":","-")
print (fDate)
#Creates Image instance
newImg=makeImage(filename,fDate)
#Adds date to list for unique
uniList.append(fDate)
#Adds image instance to list for images
imgList.append(newImg)
uniList=list(set(uniList))
unique+=len(uniList)
print ("Destination folders will be created with these filenames: ")
print (uniList)
#for folder in uniList:
#current=os.getcwd()
#newPath=current+"/"+folder
#try:
#os.makedirs(newPath)
#except (IOError, OSError) as exception:
#print ("Path could not be created")
#for image in imgList:
#filename=image.name
#dateDest=image.dateTaken
#current=os.getcwd()
#newDest=current+"/"+dateDest+"/"+filename
#currDest=current+"/"+filename
#os.rename(currDest, newDest)
print ("Total JPEGs Processed: ")
print(count)
print ("Total Unique Dates Processed: ")
print(unique)
我的错误是:
Traceback (most recent call last):
File "./Challenge.py", line 56, in <module>
f = open(filename, 'rb')
IOError: [Errno 2] No such file or directory: 'DSC_0063.jpg'
'filename'只是给出了文件名而不是整个路径,尝试'F =开放(os.path.join(根,文件名) ,'rb')' –