Имхо, более правильное решение - сделать библиотеку, реализующую функциональные возможности программы, а затем написать отдельно консольную и графическую утилиты, которые юзают эту библиотеку. Если вы пишете на питоне, то библиотеку можно реализовать в виде обычного модуля.
Всё-таки парсить вывод консольной утилиты - это изврат. Простой пример: функция возвращает вам массив, консольная утилита его выводит. Графическая должна брать этот вывод и заново превращать его в массив? Нет, лучше взять ту же функцию, написанную вами, которая возвращает массив, и просто получить из нее массив.