Python - печать на стандартный вывод на «терминале» - PullRequest
3 голосов
/ 16 июня 2009

Прежде чем начать, я прошу всех вас извиниться за вопрос. Может быть, это глупо, но я не могу найти решение. Я работаю на удаленной машине и понятия не имею, какого типа.

Мой код на 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

Спасибо!

Ответы [ 3 ]

9 голосов
/ 16 июня 2009
import sys
print "Hi!"
sys.stdout.flush()
4 голосов
/ 16 июня 2009

Чтобы перенаправить стандартный вывод на что-то, что вы можете прочитать, файл в этом случае:

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')
2 голосов
/ 16 июня 2009

Это дикая догадка, но, глядя на формулировку в ваших комментариях, вы увидите, что это может быть приложение веб-сервера (подсказка: было бы полезно узнать больше о вашей среде). В этом случае стандартный вывод, вероятно, идет куда-то еще, по крайней мере, не в браузер.

Как вы на самом деле запускаете этот код? Вы вводите «python myprogram.py» в командной строке или нажимаете «Обновить» в своем браузере?

...