Python - печатать на стандартный вывод на & # 8220; терминале & # 8221;
Вопрос
Прежде чем начать, я прошу всех вас извиниться за вопрос. Может быть, это глупо, но я не могу найти решение. Я работаю на удаленной машине и понятия не имею, какого типа. Р>
Код Python, который, кажется, работает, показан ниже. Проблема в том, что я пытаюсь напечатать некоторые результаты на экране, но ничего не происходит. Я пробовал и print, и raw_input, но ничего не происходит ... Знаете ли вы другой способ сделать это?
# Set up fields of reply message based on query
def prepareReply():
global authorReply, authorReplyLen, localConvId, originConvId, blbContentAndUntUnz, linkName
print "PLOP!"
raw_input("blabla")
#print "="*10
Спасибо! Р>
Решение
Чтобы перенаправить стандартный вывод на файл, который вы можете прочитать, в данном случае это файл:
class PyLogger:
def __init__(self, source):
self.file_handle = open('Python_Log.txt', 'a')
self.source=source
self.buf = []
def write(self, data):
self.buf.append(data)
if data.endswith('\n'):
self.file_handle = open('Python_Log.txt', 'a')
self.file_handle.write('\t' * indent_level)
self.file_handle.write(self.source + "::" + ''.join(self.buf))
self.file_handle.close()
self.buf = []
def __del__(self):
if self.buf != []:
self.file_handle = open('Python_Log.txt', 'a')
self.file_handle.write('\t' * indent_level)
self.file_handle.write(self.source + "::" + ''.join(self.buf) + '\n')
self.file_handle.close()
self.file_handle.close()
import sys
sys.stdout = PyLogger('stdout')
sys.stderr = PyLogger('stderr')
Другие советы
import sys
print "Hi!"
sys.stdout.flush()
Это неверное предположение, но, глядя на формулировку в ваших комментариях, вы увидите, что это может быть приложение веб-сервера (подсказка: было бы полезно подробнее узнать о вашей среде). В этом случае стандартный вывод, вероятно, идет куда-то еще, по крайней мере, не в браузер.
Как вы на самом деле запускаете этот код? Набираете ли вы " python myprogram.py " в командной строке, или вы нажали «Перезагрузить» в своем браузере?