warnings
라이브러리를 사용하여 (현재로서는) 쓸모없는 경고를 많이 던지는 코드로 작업하고 있습니다. 설명서 읽기 (/ 스캔) 단일 기능에 대한 경고를 비활성화 하는 방법 만 찾았습니다 . 그러나 코드를 너무 많이 변경하고 싶지 않습니다.
아마도 같은 깃발이 python -no-warning foo.py
있습니까?
무엇을 추천하나요?
답변
있다 -W 옵션 .
python -W ignore foo.py
답변
파이썬 문서의 경고 억제 섹션을 보셨습니까 ?
더 이상 사용되지 않는 함수와 같이 경고를 발생시키는 것으로 알고 있지만 경고를보고 싶지 않은 경우 catch_warnings 컨텍스트 관리자를 사용하여 경고를 억제 할 수 있습니다.
import warnings
def fxn():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
나는 그것을 용납하지 않지만 다음 과 같이 모든 경고 를 억제 할 수 있습니다 .
import warnings
warnings.filterwarnings("ignore")
전의:
>>> import warnings
>>> def f():
... print('before')
... warnings.warn('you are warned!')
... print('after')
>>> f()
before
__main__:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after
답변
환경 변수를 정의 할 수도 있습니다 (2010의 새로운 기능-python 2.7)
export PYTHONWARNINGS="ignore"
다음과 같이 테스트하십시오 : 기본값
$ export PYTHONWARNINGS="default"
$ python
>>> import warnings
>>> warnings.warn('my warning')
__main__:1: UserWarning: my warning
>>>
경고 무시
$ export PYTHONWARNINGS="ignore"
$ python
>>> import warnings
>>> warnings.warn('my warning')
>>>
더 이상 사용되지 않는 경고의 경우 더 이상 사용되지 않는 사용 중지 경고를 파이썬에서 살펴보십시오.
여기에 복사했습니다 …
warnings
모듈 문서에서 :
#!/usr/bin/env python -W ignore::DeprecationWarning
Windows를 사용하는 경우 : -W ignore::DeprecationWarning
Python에 인수로 전달하십시오 . int 로 캐스팅하여 문제를 해결하는 것이 좋습니다.
(Python 3.2에서는 지원 중단 경고가 기본적으로 무시됩니다.)
또는:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
import md5, sha
yourcode()
이제 당신은 여전히 다른 모든 것을 얻지 DeprecationWarning
만 다음으로 인한 것은 얻지 못합니다.
import md5, sha
답변
이것은 오래된 질문이지만 PEP 565 에는 파이썬 응용 프로그램을 작성하는 경우 모든 경고를 해제하는 새로운 지침 이 있습니다.
import sys
import warnings
if not sys.warnoptions:
warnings.simplefilter("ignore")
이것이 권장되는 이유는 기본적으로 모든 경고를 끄지 만 python -W
명령 줄 또는 을 통해 경고를 다시 켤 수 있기 때문 PYTHONWARNINGS
입니다.
답변
복잡한 것을 원하지 않으면 다음을 수행하십시오.
import warnings
warnings.filterwarnings("ignore", category=FutureWarning)
답변
일반적으로 발생하는 쓸모없는 경고가 무엇인지 알고 있으면 메시지별로 필터링 할 수 있습니다.
import warnings
#ignore by message
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")
#part of the message is also okay
warnings.filterwarnings("ignore", message="divide by zero encountered")
warnings.filterwarnings("ignore", message="invalid value encountered")
답변
나는 이것이 상황의 틈새에만 적용 할 수 있다는 것을 알고 있지만 numpy
실제로 사용하는 것을 좋아합니다 np.errstate
.
np.sqrt(-1)
__main__:1: RuntimeWarning: invalid value encountered in sqrt
nan
그러나 다음을 사용하십시오 np.errstate
.
with np.errstate(invalid='ignore'):
np.sqrt(-1)
nan
가장 중요한 부분은이를 매우 구체적인 코드 줄에만 적용 할 수 있다는 것입니다.