-1
我正在構建一個從另一個包中調用函數的函數。在一種情況下,其他程序包中的函數每次運行時都會記錄警告(1000次)。本地控制日誌記錄
我只想顯示其中一個警告,我不想爲用戶修改任何全局日誌記錄設置。
有沒有簡單的方法來做到這一點?
我正在構建一個從另一個包中調用函數的函數。在一種情況下,其他程序包中的函數每次運行時都會記錄警告(1000次)。本地控制日誌記錄
我只想顯示其中一個警告,我不想爲用戶修改任何全局日誌記錄設置。
有沒有簡單的方法來做到這一點?
在調用函數之前,可以更改用於標準輸出的文件句柄,從而導致將警告寫入文件。然後,您可以讀取該文件的第一行並打印出來。例如:
import sys
originalStdout = sys.stdout
outf = open('outputfile', 'r+')
sys.stdout = outf # send stdout to outputfile
package.function() # this will write output to outputfile
sys.stdout = originalStdout # restore original stdout handle
outf.seek(0) # go to begining of outputfile
print outf.readline() # print first line from outputfile
不確定這是否符合「簡單」條件,但可能有效。
在這種情況下,我不寫stdout文件。我正在開發一個工具,以便用戶可以處於交互模式或命令行,並且我不保存任何stdout文件。 – Chris
這是一個命令行程序,日誌消息被寫入stdout/strerr? – ChrisRibe
其他軟件包是否使用python日誌記錄庫,或者是否自行滾動(或僅使用print)? – Holloway
抱歉,延遲。它使用pythons日誌包。我正在構建一個人們可能在命令行或交互模式下使用的工具。我不希望用戶必須控制日誌記錄。 – Chris