2009-10-22 3 views
0

Я использую Python/C API с моим приложением, и мне интересно, как вы можете получить консольный вывод с помощью GUI-приложения. Когда есть ошибка скрипта, она отображается через printf, но это явно не влияет на приложение gui. Я хочу получить выход без создания консоли. Это можно сделать?Как получить выход?

Редактировать - Я использую Windows, кстати.

Редактировать - Библиотека Python/C внутренне вызывает printf и делает это до того, как любой скрипт может быть загружен и запущен. Если есть ошибка, я хочу получить ее.

ответ

1

Используйте пакет logging вместо printf. Вы можете использовать что-то подобное, если вам нужно записывать выходные данные из функции C.

+0

Вы можете взглянуть на http://logging.apache.org/log4cxx/index.html. Я сам не использовал его, но это (и запись на python), по-видимому, происходит из log4j. – resi

1

Если вы указали на точный вызов thqt из кода C, вам необходимо перенаправить (и удалить буфер) ваш стандартный вывод (файловый дескриптор 0) туда, куда вы можете получить данные - далеко от тривиального, esp , в Windows, хотя, возможно, выполнимо. Но почему бы просто не изменить этот вызов в своем коде на что-то более разумное? (В худшем случае функция geprintf вашего собственного проекта, которая имитирует printf для построения строки, затем направляет эту строку соответственно).

Если вы на самом деле означает print заявления в коде Python, это намного проще - просто установите sys.stdout на объект с методом write принимая строку, и вы можете иметь этот метод делать все, что вы хотите, в том числе ведение журнала, запись на окнах GUI, что бы вы ни пожелали. Ах было так просто на уровне C!)

Смежные вопросы