Comments 34
UFO just landed and posted this here
Молодец! Нашёл к чему придраться!
+16
Я рад что вы скурпулёзно просмотрели код. :)
+9
лучше уж избегать проблем связанных с различными файловыми/операционными системами
к примеру в Windows в имени файла запрещено использование некоторых служебных символов: «\», «/», «:», «*», «?», «"», «<», «>», «|». как с «×» не знаю (да и проверить не на чем)
к примеру в Windows в имени файла запрещено использование некоторых служебных символов: «\», «/», «:», «*», «?», «"», «<», «>», «|». как с «×» не знаю (да и проверить не на чем)
+1
А есть ли что-то подобное, но только чтоб упорядочить фотографии по дате создания?
0
Вот, попробуйте, подправил код выше ( правда сортирует все файлы а не только картинки :) ):
Copy Source | Copy HTML
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*-
- """ sorts images by resolution"""
-
-
- import os,sys
- import time
-
- 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
- if not newdir: newdir = 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:
- 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--%s--%s'%(file_date.tm_year,file_date.tm_mon,file_date.tm_mday)
- 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('move "%s" "%s"'%(name,imdir))
- except EnvironmentError:
- print 'error with '+ name, '/n'
- if not recur:print 'sorting completed!'
-
- if __name__ == '__main__':
- image_sort(dirname, newdir)
+1
Поправьте меня, если я не прав, но может лучше вместо вызова внешней утилиты move использовать функцию move из библиотеки shutil?
0
Да, будет лучше. Я все искал безуспешно эту функцию в модуле os, незнал что её запихали в такие дебри :)
0
Вот здесь есть уже готовая функция для переноса с учетом многих нюансов
code.djangoproject.com/svn/django/trunk/django/core/files/move.py
code.djangoproject.com/svn/django/trunk/django/core/files/move.py
0
дело не в быдло-коде, а в самой логике и ф-ционале
1) сделать выбор (перемещать существующие изображение или только скопировать в сортируемую диру)
2) перемещение файла не на всех ОСь move (mv)
3) опционально сделать выбор между:
а) ложим все изображения рекурсивно по дирам (вид images/sort/10x10; images/sort/subdir/10x20)
б) пихаем со всех субдир в одну сортируемую диру по разрешению изображений (images/sort/10x10, images/sort/10x20)
если это реализовать, будет уже на что то похоже
1) сделать выбор (перемещать существующие изображение или только скопировать в сортируемую диру)
2) перемещение файла не на всех ОСь move (mv)
3) опционально сделать выбор между:
а) ложим все изображения рекурсивно по дирам (вид images/sort/10x10; images/sort/subdir/10x20)
б) пихаем со всех субдир в одну сортируемую диру по разрешению изображений (images/sort/10x10, images/sort/10x20)
если это реализовать, будет уже на что то похоже
-2
я бы на вашем месте эту пренебрежительно оторванную от сердца фразу про быдлокод убрал бы, ну или хотябы изменил, никто не идеален
+1
UFO just landed and posted this here
UFO just landed and posted this here
Спасибо за указания на недочеты и лишнее \n. Насчет Exception: насколько я знаю то при таком указании получится, что исключения возбуждаемые sys.exit() тоже будут перехватываться, а это вроде как не очень хорошо. А насчет кавычек, не пойму зачем их экранировать ведь они разные.
Поясните эти моменты, если не сложно.
Поясните эти моменты, если не сложно.
+1
Ваш вариант обработки исключиний «хороший». Нужно ловить только то что можешь обработать, остальное нужно идти на обработку обработчику верхнего уровня или обработчику по умолчанию если нет такого, который «положит» програму. А совет ловить все исключения в корне неправилен и за такое нужно железной линейкой по пальцам, единственное исключение, можна на самом верхнем уровне поставить обработчик того что уже никто не обработает, который непоготовленому пользователю выдаст «програма упала свяжитесь с поддержкой», а сам прологирует событие и «положит» програму.
0
UFO just landed and posted this here
Благодаря таким как вы… — я потихоньку изучаю питон.
+5
absx = dirname+os.sep+x
Вы же ниже используете os.path.join, зачем тут такой изворот? :)
Вы же ниже используете os.path.join, зачем тут такой изворот? :)
0
молодца
0
А можно модернизировать скрипт: задавать 2 директории(откуда и куда) а также смотреть соотнощение сторон и сувать это на первый уровень (16:9/1280x720)?
0
Sign up to leave a comment.
Сортировка изображений по разрешению с помощью Python и PIL