Python-在stdout上的“终端”上打印

2024-05-05 22:11:31 发布

您现在位置:Python中文网/ 问答频道 /正文

在开始之前,我请大家为这个问题道歉。也许这很愚蠢,但我找不到解决办法。 我在一台远程机器上工作,不知道是哪种类型的。

下面是我的python代码,看起来很有用。问题是我试图在屏幕上打印一些输出,但什么也没有发生。 我试过打印和原始输入,但什么也没发生。。。你知道还有别的办法吗?

# 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

谢谢!


Tags: of代码机器类型messagefields远程屏幕
3条回答

这是一个粗略的猜测,但是查看注释中的措辞表明它可能是一个web服务器应用程序(提示:有关您的环境的更多详细信息将很有帮助)。在这种情况下,stdout可能会去别的地方,至少不会去浏览器。

你是怎么运行这些代码的?您是在shell提示符下键入“python myprogram.py”,还是在浏览器中单击Reload?

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

要将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('\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')

相关问题 更多 >