IPython Notebook에서 출력을 어떻게 억제합니까?


113

출력을 stdout억제 하려면 어떻게 해야합니까?

세미콜론을 사용하여 반환 된 개체를 표시하지 않을 수 있습니다. 예를 들면 다음과 같습니다.

>>> 1+1
2

>>> 1+1;   # No output!

그러나 stdout에 인쇄하는 함수는 세미콜론의 영향을받지 않습니다.

>>> print('Hello!')
Hello!

>>> MyFunction()
Calculating values...

출력을 print/ MyFunction억제하려면 어떻게해야합니까?


iruby 커널의 nil 경우 마지막 줄로 추가하십시오
frenesim

답변:


168

%%capture셀의 첫 번째 줄로 추가 합니다. 예 :

%%capture
print('Hello')
MyFunction()

이것은 단순히 출력을 삭제하지만, %%capture마법 변수에 출력을 저장하는 데 사용할 수 있습니다 - 워드 프로세서를 참조


2
누구든지 %% capture의 반대가 뭔지 알아? 에서와 같이 셀 내에서 %% capture를 중지하는 방법은 무엇입니까? 아니면 셀 끝까지 사용할 수 있습니까?
David Parks

2
알아두면 좋은 점 %%capture은 셀이 끝날 때까지만 활성화되며 셀의 코드 앞에 나타나야한다는 것입니다. (따라서 셀 내에서 캡처를 해제하는 방법이없는 것 같습니다.)
Arel

ICYMI, @David Parks 및 @Arel의 논의는이 페이지에서 @ gwd2의 답변으로 다룹니다 with io.capture_output() as captured:. 셀 내에서 미세 조정하여 해당 with컨텍스트 에서 실행되는 항목 만 캡처 할 수 있습니다 .
Wayne

이것은 Python 커널에서만 작동합니다 (예 : R이 아님).
Max Ghenis

90

출력 억제

;출력 [ 참조 ] 의 인쇄를 억제하려면 행 끝에를 넣으십시오 .


4
이것은 for루프 내부의 코드가 아닙니다 . 어떤 아이디어? 모든 줄이 아니라 셀의 특정 코드 줄에서만 출력을 억제하고 싶습니다. 감사합니다
혼동

16

(크레딧 : https://stackoverflow.com/a/23611571/389812 )

io.capture_output 사용할 수 있습니다 .

from IPython.utils import io

with io.capture_output() as captured:
    MyFunction()

내에서 해당 줄에 대한 stdout 및 stderr을 억제 (예 : 캡처)하려면 with-statement.


정말 감사합니다. 이것은 나를 미치게 만들었습니다.를 호출하는 노트북을 열 때마다 실행되는 시작 기능이있어서 %autosave출력을 억제하고 싶었습니다. 하지만 이상하게, - 그것은 간단 할 것이라고 생각 contextlib.redirect_stdout하고 sys.stdout = open(os.devnull, 'w')모두 실패 (여분의 빈 라인을 인쇄 결국). 이것은 받아 들여진 대답이어야합니다.
Luke Davis

1
이것은 내가 가장 좋아하는 대답이었습니다. 왜냐하면 모든 것을 억제하지 않고도 셀의 일부 출력을 억제 할 수 있기 때문 입니다.
Wolpertinger

-5

모든 출력을 지우는 데 관심이있는 사람이있는 경우 :

  1. 셀로 이동
  2. 모든 출력으로 이동

그런 다음 원하는 옵션을 선택하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.