Блог им. duke565 → Скрипт для сортировки файлов(изображений) , собирающий их в отдельный папки в зависимости от даты
Строго не судите. Просто родственник попросил сделать за ничего=) Имеются конечно косяки, а в целом работает
#!/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)