@andrejfomenko

Как сравнить строку?

Здравствуйте выполняю консольную команду и получаю ответ в виде строки:
beesrav = subprocess.check_output('compare -metric PSNR /home/crossteach/scr/w32bee/1.jpg /home/crossteach/scr/w32bee/2.jpg test.png; exit 0', shell=True, universal_newlines=True);

на результат приходит число 30.2337 мне нужно его сравнить если больше 50 то...
но строку он не сравнивает сделать int(beesrav) тоже ошибка (ValueError: invalid literal for int() with base 10: '') , как мне переобразовать эту строку так чтобы сравнить? числа после запятой можно отбросить, перегуглил, перепробовал уже почти все что можно и в float конвертить не получается и round округлить

дополнение 1: c685d8b90e064d3192cef5f5560a16da.png
здесь я ввел команду вручную в консоли убунту, как видно ответ приходит перед именем учетной записи, мб subprocess.check_output считывает то что идет после имени и поэтому пустая строка? но почему тогда принтом выводит...
вот скрин с закоменченным int(beesrav)
1386035f98094cf3b15f66754c07b6e5.png
а вот с ошибкой81043e9eeb9b487b8e7bdf690f2f665d.png
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ответы на вопрос 3
@alex-t
Прогр. в команде rco.ru
Число-то не целое, используйте float(beesrav).
Ответ написан
@vanillathunder
Если 30.2337 действительно число, то должно всё сравнивать. Необходимо определить тип.
type(beesrav)
А потом уже производить сравнение.
Ответ написан
Комментировать
@andrejfomenko Автор вопроса
Всем спасибо, оказывается проблема была в subprocess.check_output, через Popen все заработало
вот рабочий код:
import subprocess;
beesrav = subprocess.Popen('compare -metric PSNR /home/crossteach/scr/w32bee/1.jpg /home/crossteach/scr/w32bee/2.jpg test.png; exit 0', shell=True,universal_newlines=True, stdout = subprocess.PIPE, stderr=subprocess.STDOUT);
st = beesrav.stdout.readline();
print(st);
i = float(st);
i = round(i);
i = int(i);
print(i);

в int можно было не переводить, это я так уже.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы