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::DeprecationWarningPython에 인수로 전달하십시오 . 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
가장 중요한 부분은이를 매우 구체적인 코드 줄에만 적용 할 수 있다는 것입니다.
