因为我对编码和python还比较陌生,所以我不能解决任何问题。我想创建一个代码,可以从.jpeg文件中获取exif信息,然后根据在exif中找到的日期创建文件夹,然后将这些图片移动到各自的文件夹中。到目前为止,我的代码获取日期,然后创建文件夹(年、月、日)。但我不知道怎么把照片移到相应的文件夹里。这是我的密码。任何帮助都将不胜感激
import os
import sys
import PIL.Image
import PIL
from PIL import ExifTags
import datetime
from datetime import datetime
import os.path, time
from os import walk
import pathlib
import re
path=os.path.join(sys.argv[1])
destination=os.path.join(sys.argv[2])
#Pour creer la liste contenant les fichiers du dossier
def getListOfFiles(path):
listOfFile=os.listdir(path)
allFiles=[]
for i in listOfFile:
fullPath=os.path.join(path, i)
if os.path.isdir(fullPath):
allFiles= allFiles+getListOfFiles(fullPath)
else:
allFiles.append(fullPath)
return allFiles
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
#print(getListOfFiles(path))
#print(len(getListOfFiles(path)))
#get metadata
foldertobemade=[]
extensions = ('.jpg')
for i in getListOfFiles(path):
#print(i) #prints all the names of images
ext = os.path.splitext(i)[-1].lower()
#print(ext)
if ext == extensions:
#print(i)
img=PIL.Image.open(i)
#print(img) #prints the image opened
exif=img._getexif()
#print(exif) #prints metadata
try:
if 36867 in exif:
#print(exif[36867])
foldertobemade.append(exif[36867])
except Exception as e:
pass
#print(foldertobemade)
for dates in foldertobemade:
#print(dates[:4])
#print(dates[5:7])
#print(dates[8:10])
for i in getListOfFiles(path):
if not os.path.exists(dates[:4]):
os.makedirs(dates[:4])
if not os.path.exists(dates[:4]+ "/" + dates[5:7]):
os.makedirs(dates[:4]+ "/" + dates[5:7])
if not os.path.exists(dates[:4]+ "/" + dates[5:7]+ "/" +dates[8:10]):
os.makedirs(dates[:4]+ "/" + dates[5:7]+ "/" +dates[8:10])
我只需将
shutil.move(i, 'dest_folder')
添加到不同的目的地,就可以了相关问题 更多 >
编程相关推荐