如何使用python根据日期将照片,视频分解为文件夹





每个人都熟悉照片和视频的废墟,这些废墟在从设备复制后已经存在了多年。



对于iphone,ipad尤其如此,当直接复制(没有iTunes)时,ipad会创建

媒体内容存放区。您如何按年份和月份对它们进行分类?



是的,有同步,是的,您可以一次对所有内容进行排序。但是……



有人不愿触摸任何东西,因为观察到了垃圾填埋场的统一性,有人胆小地尝试分解至少几年来积累的一切。



毫无疑问,通过资源管理器,使用表格视图,手动分散所有这些内容并不困难,但是您开始查看旧照片时,过程将会延迟。



因此,我们将编写一个简单的程序,将文件夹中的文件分解成几个月,其中包含数月:











该程序本身将确定日期,“看”文件的修改日期:







为什么我们使用修改日期,而不是文件创建日期?

通常,与同名女士相比,她更正确地指示文件的日期。



开始导入模块:

import os,time
import datetime
import shutil


我们建议用户将路径(窗口)复制到包含文件的文件夹中:



p=input('    . : E:/\1')
os.chdir(p)


让我们介绍一下创建从01到12个月的文件夹的功能(原谅我缺少f'行):



#    01  12
def d():
    for x in range (1,13):
        if x>9:
            if not os.path.exists(str(x)):
                os.makedirs(str(x))
        else:
            if not os.path.exists('0'+str(x)):
                os.makedirs('0'+str(x))


以下功能将处理从照片/视频文件获得的日期:



def mod_date(file):
    t = os.path.getmtime(file)
    return datetime.datetime.fromtimestamp(t)


现在,遍历该文件夹,该程序将收集所有文件扩展名,并同时

确定文件的年份。每年,将创建自己的文件夹,并在其中

创建带有月份的文件夹:



a=[] #['AAE', 'MOV', 'JPG', 'PNG']
for root, dirs, files in os.walk(p):    
    for file in files:
        if file[-3:] not in a:
            a.append(file[-3:])
        if file[-3:] in a:
            year=str(mod_date(file))[:10][:4]            
            if not os.path.exists(year):
                os.makedirs(year)
            os.chdir(p+'/'+year)            
            d()
            os.chdir(p)


*因此,您可以将具有完全不同(任何)扩展名的文件分散到文件夹中,而不仅仅是jpeg,mov,mkv。



让我们再次浏览带有照片转储的文件夹,现在将照片传输到相应的新创建的文件夹中:



try:
    for root, dirs, files in os.walk(p):    
        for file in files:
                if file[-3:] in a:
                    year=str(mod_date(file))[:10][:4]                    
                    month=str(mod_date(file))[:10][5:7] #  
                    shutil.move(file, year+'/'+month+'/'+file) #   
except EnvironmentError:
    (' ')


由于程序会因错误而终止,而不会在循环中找到最后一个文件,这不会影响程序的正确执行,因此使用try以外的拐杖进行操作,这会使在控制台中发红的印象深刻的人保持警惕。



PS:该帖子并不伪装成科学的,但也许可以帮助某人击败照片/视频转储。下载



程序



All Articles