Найти - Пользователи
Полная версия: IndexError: list index out of range
Начало » Python для новичков » IndexError: list index out of range
1 2
guranvir
А понял все паардон)
guranvir
тогда это Вам
micpicode
guranvir
тогда это Вам
именно там я и взял скрипт … который не работает …
py.user.next
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
micpicode
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. Сколько файлов обработано, сколько папок создано

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

и мне кажется одного этого кода не достаточно … по крайне мере пытаюсь сам домыслить или дописать по возможности …
но в силу нулевых знаний … чтение документации не сдвигает с места дело …
py.user.next
micpicode
и мне кажется одного этого кода не достаточно
ну это первый этап, ядро программы
micpicode
а почему собственно не работает сабжевый скрипт … ?
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB