2009-06-16 32 views
3

开始之前,我要求大家为这个问题道歉。也许这很愚蠢,但我找不到解决方案。 我在远程机器上工作,不知道是什么类型。Python - 在“终端”上的标准输出上打印

我的Python代码,似乎工作,是下面的一个。问题是我试图在屏幕上打印一些输出,但没有任何反应。 我已经尝试了打印和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 

谢谢!

+0

打印打印到标准输出 - 这个问题必须在别处。你正在使用哪个Python版本? – 2009-06-16 09:15:35

+0

2.4标准输出是否有可能在其他地方被重定向? – wheisenberg 2009-06-16 09:19:52

+0

可以重定向stdout,但我认为这不是默认情况下完成的。 我已经使用重定向记录到在无法访问标准输出的情况下记录文件。 – 2009-06-16 09:20:32

回答

4

重定向标准输出的东西,你可以在这种情况下读取,文件:

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

这是一个疯狂的猜测,但看看您的评论中的措辞表明它可能是一个Web服务器应用程序(提示:有关您的环境的更多细节将有所帮助)。在这种情况下,stdout可能正在其他地方,至少不是浏览器。

你是如何运行该代码?你是否在shell提示符下键入“python myprogram.py”,或者在浏览器中打开了Reload?

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