考慮一下:控制外型後,他們曾經supressed
>>> import warnings
>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Hello", DeprecationWarning)
/usr/bin/bpython:2: DeprecationWarning: Hello
OK了警告那裏。
>>> warnings.filterwarnings("ignore", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning)
這裏沒有警告。
>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning) # why remain silent?
>>>
這裏沒有報警,但應該是所有我看到一個警告。同樣的情況,如果刪除了「忽略」過濾器上都蟒蛇2和3
雖然原則上這不應該是一個問題,(除非還有另外一個原因),我創建了這個沉默的地方警告並沒有意識到的。這使得很難確定警告是否在給定的警告環境中受到控制。
注意:在腳本內部,這個例子工作正常。然而,我原來的問題也許只是與這個例子類似,所以我懷疑它僅限於交互式提示。在原始問題中,我看不到任何警告,即使warnings.filters
中的第一個過濾器應該與「always」匹配(我檢查過)。
是否要[重置警告](http://docs.python.org/2/library/ warnings.html#warnings.resetwarnings)? – mgilson
@mgilson,基本上是的,但它不工作...基本上我想保存和恢復警告上下文,這使得它不工作,因爲我希望它的工作。 – seberg
我無法重現你在說什麼。當我把它放在一個腳本中時,我會看到兩個警告。 – mgilson