LINUX.ORG.RU

не пойму где ошибка в скрипте python

 


0

2

Приветствую вас категорически!

Есть такой скрипт на python:

#! /usr/bin/python2

from os import system, listdir
from sys import stdout

lst = [f for f in listdir('photos') if f.endswith(".jpg")]
lst.sort()
lst = zip(lst[:-1], lst[1:])

run_cnt = 0
max_run_cnt = 4

print
for (i, (f1, f2)) in enumerate(lst):
    print '\t%d/%d\r' % (i, len(lst)),
    stdout.flush()

    if run_cnt == max_run_cnt - 1:
        system('convert %s %s -morph 10 photos/%05d_%%02d.jpg' % (f1, f2, i))
        run_cnt = 0
    else:
        run_cnt += 1
        system('convert %s %s -morph 10 photos/%05d_%%02d.jpg &' % (f1, f2, i))

В терминал сыпятся ошибки типа:

convert: no decode delegate for this image format `04' @ error/constitute.c/ReadImage/501.
convert: no images defined `photos/00000_%02d.jpg' @ error/convert.c/ConvertImageCommand/3241.
convert: no decode delegate for this image format `04' @ 

Что не так? В каталоге соответственно лежат картинки в формате jpg, с именами типа: src_20150905_20:04:05.jpg

Спасибо!

★★★

no images defined `photos/00000_%02d.jpg'
%%02d.jpg

файл именно с процентом?
Алсо, ошибки к питону не имеют никакого отношения. Ошибки выдает ImageMagick.

takino ★★★★★
()

Очевидно команда неправильно генерится.

1 Выведи команды вместо того чтобы их запускать (print вместо system) 2 Попробуй запустить команды вручную

redixin ★★★★
()
Ответ на: комментарий от takino

файл именно с процентом?

всмысле. в каталоге файлы лежат с именами: src_20150905_20:04:05.jpg

Алсо, ошибки к питону не имеют никакого отношения. Ошибки выдает ImageMagick.

ну да, но строка

system('convert %s %s -morph 10 photos/%05d_%%02d.jpg' % (f1, f2, i))
задаёт неправильные аргументы. Вот я не пойму почему. Если вручную скормить любые 2 файла из директории imagemagic'у, то ругани нет.

hope13 ★★★
() автор топика
Ответ на: комментарий от redixin

спасибо. ошибка нашлась. теряется часть пути. А именно тут:

%s %s
. Скрипт лежит на уровень выше, соответственно imagemagic'у передавались только имена файлов.

hope13 ★★★
() автор топика

Так же, зачем делать это с помощью python, когда можно сдеать так с помощью xargs?

takino ★★★★★
()
Ответ на: комментарий от entefeed

Ошибка в использовании депрекейтед версии питона.

4.2, никто python2.7 депрекейтить не собирается в ближайшее время, новые релизы пилятся регулярно. Legacy != deprecated.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от entefeed

За 4 года произойдёт ещё туева хуча всего, а многие библиотеки так и не перепишут под третью версию.

Энивей, ещё раз тебе повторяю - legacy != deprecated, словарик открой, если не веришь.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от tiandrey

Четыре года пройдут быстрее чем ты думаешь.

This means there will be bugfix releases until 2020.
until

Повторять можешь хоть до посинения, но после 2020 питон2.7 - все. Совсем все. Зачем вы используете заведомо мертвую технологию? Феерические ССЗБ.

а многие библиотеки так и не перепишут под третью версию.

Конечно, из-за таких ССЗБ как ты.

entefeed ☆☆☆
()
Ответ на: комментарий от takino

Хм, хороший вопрос. Наверное у меня тяга к повышению градуса бессмысленного идиотизма.

hope13 ★★★
() автор топика
Ответ на: комментарий от entefeed

после 2020 питон2.7 - все. Совсем все.

Т.е. весь софт под второй питон превратится в тыкву? Забавно будет посмотреть.

Конечно, из-за таких ССЗБ как ты.

Да будет тебе, я ж не python developer, чтобы влиять на такую фигню.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

Т.е. весь софт под второй питон превратится в тыкву?

Только если лично ты не возьмешься править баги и дырки в депрекейтед говне. Ой, но ты же не python developer.

entefeed ☆☆☆
()
Ответ на: комментарий от entefeed

Зачем вы используете заведомо мертвую технологию

Карго-культ штабильности. Как вера в экстрасенсов и тд — с минимумом работы получить что-то, никто не знает что.

anonymous
()
Ответ на: комментарий от entefeed

Ну серьёзно, хреновый из тебя собеседник. Тебе говоришь, что оно ещё несколько лет поддерживается, а ты на говно исходишь на ровном месте.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

А ты не очень шустрый. Я на твою личность еще давно перешел.

entefeed ☆☆☆
()
Ответ на: комментарий от tiandrey

Тебе говорят что эти несколько лет багфиксов вам были даны для перевода инфраструктуры на актуальную версию. Потому что за один день это не делается. А вы продолжаете сидеть на жопе ровно и говно ложками жрать.

Даже такие слоупоки как дебиановцы спохватились и в Бастере не должно остаться второго питона. А ты похоже и не почешешься до тех пора пока технология не завоняет как какой-нибудь шиндошс XP.

entefeed ☆☆☆
()

Используй subprocess.Popen вместо os.system и будет меньше таких багов.

ei-grad ★★★★★
()
Ответ на: комментарий от entefeed

Видимо твоё представление мира не соответствует реальности. 2.7 после 2020 может и отойдёт от мэйстрима, но писать на нём будут ещё как минимум лет 10.

itn ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.