Python - 在“终端”上输出到stdout
在开始之前,我想请大家原谅我的问题。也许这个问题很傻,但我找不到解决办法。
我正在一台远程机器上工作,但我不知道这台机器是什么类型。
我写的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')