guranvirименно там я и взял скрипт … который не работает …
тогда это Вам
micpicode1. Найти файлы
В общем есть папка в которой кучей свалены файлы … а рассортировать требуется по разрешениям …
папки заранее не существуют … то есть скрипт должен брать изображение … смотреть его разрешение и класть в папку с названием
такого же разрешения … а если этой папки нет то создавать её …
def get_files(dir):
return iter(["1.png", "2.png"])
def get_resolution(image):
return 1024, 768
py.user.nextВот крайне непонятно что вы предлагаете сделать …
1. Найти файлы
2. Определить разрешения
2.1. Сохранить в папки
3. Сообщить статистику
1. Искать можно с помощью glob ( glob.glob(“*.png”) )
2. Не знаю, image какой-нибудь
2.1. Проверить наличие os.path.exists(), создать папку os.mkdir(), скопировать файл open() + read() + write() + close() + os.remove() или только os.system()
3. Сколько файлов обработано, сколько папок создано
вот, нужно сначала написать для одного файла, чтобы он находился, чтобы разрешение определялось, чтобы папка создавалась
любой этап можно сделать псевдо-выполненным
micpicodeну это первый этап, ядро программы
и мне кажется одного этого кода не достаточно
micpicodeУра заработало … ошибка была в 46 строке … заменил move на mv …
а почему собственно не работает сабжевый скрипт … ?
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
""" sorts images by resolution"""
import os,sys
from PIL import Image
# задаёт директорию для сортировки
dirname = os.path.abspath(sys.argv[1])
try:
newdir = os.path.abspath(sys.argv[2])
except:
newdir = dirname
def image_sort(dirname, newdir, recur= 0):
if not recur:print 'sorting started ...' # если главная папка
else: print 'sorting started in %s...'%dirname # если подпапка
# собирает все подпапки в список и рекурсивно обходит
imagelist = []
if os.path.isdir(dirname):
for x in os.listdir(dirname):
absx = dirname+os.sep+x
if os.path.isfile(absx):imagelist.append(absx)
else:
#print 'summon subsort in %s'%x
image_sort(absx, newdir+os.sep+x,recur=1)
# проходит по содержимому папки/подпапки
for name in imagelist:
try:
resolution = Image.open(name).size #получить разрешение
except IOError:
print 'seems not image: '+ name, '/n'
continue
imdir = '%sx%s'%(resolution[ 0],resolution[1])
imdir = os.path.join(newdir,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.mkdir(imdir)
try:
os.system('mv "%s" "%s"'%(name,imdir))
except WindowsError:
print 'error with '+ name, '/n'
if not recur:print 'sorting completed!'
if __name__ == '__main__':
image_sort(dirname, newdir)