2009-06-16 58 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()