#!/usr/bin/env python
# -*- coding: utf-8 -*-
##########################################################################################################
'''
by duke565
Скрипт для сортировки изображений. Собирает файлы из папок и подпапок и разбрасывает их
   по папкам указывая на них дату создания'''
##########################################################################################################  
import os
from shutil import move
import time
##########################################################################################################
dirname = '/home/duke565/splav_2/' # основаная директория
try:
    newdir = '/home/duke565/splavS/' # куда сложить
    OrigNewDir = newdir
except:
    newdir = dirname
     
def image_sort(dirname, newdir, recur= 0):
    if not recur:print 'sorting started ...'
    else: print 'sorting started in %s...'%dirname
    if not newdir: newdir = dirname
 
    imagelist = []
 
    if os.path.isdir(dirname):   #если это папка то
            for x in os.listdir(dirname):
                absx = dirname+os.sep+x # absx - путь  до файла
                if os.path.isfile(absx):
                    imagelist.append(absx) # если это файл, то записывает путь в лист
                else:
                    image_sort(absx, newdir+os.sep+x, recur=1) # 
            for name in imagelist:
                    try:
                        file_date = time.localtime(os.stat(name).st_mtime)
                    except EnvironmentError, error:
                        print 'seems error: %s with '%error, name, '/n'
                        continue
                    
                    imdir = '%s--%02d--%02d'%(file_date.tm_year,file_date.tm_mon,file_date.tm_mday)
                    imdir = os.path.join(OrigNewDir,imdir)
                    
                    if os.path.split(dirname)[-1] == os.path.split(imdir)[-1]:
                        continue
                    elif not os.path.exists(imdir):
                        print 'making dir %s'%imdir
                        os.makedirs(imdir)
                    
                   
                    head,tail = os.path.split(name)    # split orig path
                    replica = os.path.join(imdir,tail) #path file in new folder 
                    if  os.path.isfile(replica): # if file true then rename old  
                            to_ext = '.JPG'
                            if  to_ext[0] != '.':
                                 to_ext = '.'+to_ext
                            root, ext = os.path.splitext(tail)
                            print "Renaming", tail, "to", root+'_1'+ext
                            path_orig = os.path.join(head, tail)
                            path_new =  os.path.join(head, root+'_1'+to_ext)
                            os.rename(path_orig, path_new)
                            imagelist.append(path_new)                                             
                    else:          
                            try:
                                print '\n MOVE "%s" "%s"'%(name,imdir)
                                move(name,imdir)
                            except EnvironmentError:
                                print '\n Error with '+ name,

    if not recur:
        for root, dirs, files in os.walk(dirname):
            if not files:
                for name in dirs:
                    os.rmdir(os.path.join(root,name)) 
                    
                
        print 'sorting completed!'
         

image_sort(dirname, newdir) 

Строго не судите. Просто родственник попросил сделать за ничего=) Имеются конечно косяки, а в целом работает
31 Июль 2012, 12:22 0 duke565
blog comments powered by Disqus