Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2010 20:28:34

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

А понял все паардон)



Офлайн

#2 Ноя. 14, 2010 20:30:26

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

тогда это Вам



Отредактировано (Ноя. 14, 2010 20:31:05)

Офлайн

#3 Ноя. 14, 2010 20:55:02

micpicode
От:
Зарегистрирован: 2010-11-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

guranvir
тогда это Вам
именно там я и взял скрипт … который не работает …



Офлайн

#4 Ноя. 14, 2010 22:16:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

IndexError: list index out of range

micpicode
В общем есть папка в которой кучей свалены файлы … а рассортировать требуется по разрешениям …
папки заранее не существуют … то есть скрипт должен брать изображение … смотреть его разрешение и класть в папку с названием
такого же разрешения … а если этой папки нет то создавать её …
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. Сколько файлов обработано, сколько папок создано

вот, нужно сначала написать для одного файла, чтобы он находился, чтобы разрешение определялось, чтобы папка создавалась
любой этап можно сделать псевдо-выполненным

def get_files(dir):
return iter(["1.png", "2.png"])

def get_resolution(image):
return 1024, 768



Отредактировано (Ноя. 14, 2010 22:24:39)

Офлайн

#5 Ноя. 16, 2010 10:42:13

micpicode
От:
Зарегистрирован: 2010-11-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

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. Сколько файлов обработано, сколько папок создано

вот, нужно сначала написать для одного файла, чтобы он находился, чтобы разрешение определялось, чтобы папка создавалась
любой этап можно сделать псевдо-выполненным
Вот крайне непонятно что вы предлагаете сделать …

и мне кажется одного этого кода не достаточно … по крайне мере пытаюсь сам домыслить или дописать по возможности …
но в силу нулевых знаний … чтение документации не сдвигает с места дело …



Отредактировано (Ноя. 16, 2010 10:45:41)

Офлайн

#6 Ноя. 16, 2010 20:49:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

IndexError: list index out of range

micpicode
и мне кажется одного этого кода не достаточно
ну это первый этап, ядро программы



Офлайн

#7 Ноя. 24, 2010 17:20:12

micpicode
От:
Зарегистрирован: 2010-11-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

а почему собственно не работает сабжевый скрипт … ?



Офлайн

#8 Ноя. 24, 2010 18:02:24

micpicode
От:
Зарегистрирован: 2010-11-13
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

IndexError: list index out of range

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)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version