2009-10-22 332 views
0

我使用我的應用了Python/C API,我想知道如何可以得到控制檯輸出與GUI應用程序。當有腳本錯誤,它通過printf的顯示,但是這顯然有一個GUI應用程序沒有任何影響。我希望能夠在不創建控制檯的情況下獲得輸出。這可以做到嗎?如何獲得輸出?

編輯 - 即時通訊使用的是Windows,順便說一句。

編輯 - Python的/ C庫內部調用printf和這樣做之前可以加載並運行任何腳本。如果有錯誤,我希望能夠得到它。

回答

1

使用logging包,而不是printf函數。如果需要記錄C函數的輸出,可以使用類似的東西。

+0

你可以看看http://logging.apache.org/log4cxx/index.html。我沒有使用它自己,但這(和python日誌記錄)似乎是從log4j派生。 – resi 2009-11-06 12:50:43

1

如果按照printf您的意思是來自C代碼的調用,您需要將您的標準輸出(文件描述符0)重定向(並解除緩衝)到某個可以從中獲取數據的地方 - 遠不瑣碎,esp 。在Windows中,儘管可能是可行的。但是,爲什麼不把你的C代碼中的這個調用改爲更明智的呢? (最壞的情況,你自己設計的geprintf函數模仿printf來構建一個字符串,然後適當地引導該字符串)。

如果你確實意味着Python代碼print語句,它更容易 - 剛剛成立sys.stdout的同一個write方法的對象接受一個字符串,你可以有方法做你想做的,包括日誌記錄,寫作在GUI窗口上,無論你希望如何。嗯,它在C級簡單! - )