Python - печать на stdout на "терминале"


4 принят

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

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('
'):
      self.file_handle = open('Python_Log.txt', 'a')
      self.file_handle.write('	' * 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('	' * indent_level)
      self.file_handle.write(self.source + "::" + ''.join(self.buf) + '
')
      self.file_handle.close()      
    self.file_handle.close()

import sys
sys.stdout = PyLogger('stdout')
sys.stderr = PyLogger('stderr')

9
import sys
print "Hi!"
sys.stdout.flush()

2

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

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

питон, стандартный вывод,

python,stdout,

3

Ответов: 3


4 принят

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

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('
'):
      self.file_handle = open('Python_Log.txt', 'a')
      self.file_handle.write('	' * 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('	' * indent_level)
      self.file_handle.write(self.source + "::" + ''.join(self.buf) + '
')
      self.file_handle.close()      
    self.file_handle.close()

import sys
sys.stdout = PyLogger('stdout')
sys.stderr = PyLogger('stderr')

9
import sys
print "Hi!"
sys.stdout.flush()

2

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

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

питон, стандартный вывод,
Похожие вопросы