我想記錄一個Python腳本的所有輸出。我試過了:如何在Python中重定向stderr?
import sys
log = []
class writer(object):
def write(self, data):
log.append(data)
sys.stdout = writer()
sys.stderr = writer()
現在,如果我「打印」某物''它會被記錄。但是,如果我舉例說一些語法錯誤,比如說「打印'某個東西#」,它不會被記錄 - 它會進入控制檯。
我該如何捕獲Python解釋器中的錯誤?
我看到一個可能的解決方案在這裏:
http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3
但第二個示例記錄到的/ dev/null的 - 這不是我想要的。我想登錄到像上面的例子或StringIO或類似的列表...
另外,最好我不想創建一個子進程(並在獨立的線程中讀取其stdout和stderr)。
也許作家也應該實現writelines()。 不要忘記sys.stderr.flush() –