Python - 在“终端”上输出到stdout

3 投票
4 回答
43198 浏览
提问于 2025-04-15 12:16

在开始之前,我想请大家原谅我的问题。也许这个问题很傻,但我找不到解决办法。

我正在一台远程机器上工作,但我不知道这台机器是什么类型。

我写的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

谢谢!

4 个回答

2

这只是个大胆的猜测,不过从你评论里的用词来看,可能是个网页服务器应用程序(提示一下:多提供一些你环境的细节会更有帮助)。在这种情况下,标准输出(stdout)可能是去别的地方了,至少不是直接显示在浏览器里。

你到底是怎么运行这段代码的呢?是通过在命令行输入“python myprogram.py”,还是在浏览器里点击了刷新?

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

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

2

要把输出内容(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')

撰写回答