Linux

XTerm에서 파이썬과 tee 사용 시 출력이 잘 안되는 이유

검정비니 2022. 4. 5. 14:00
728x90
반응형

우분투에서 XTerm을 사용해서 다음과 같은 커멘드를 통해 파이썬 프로그램을 실행시킨 뒤 그 출력을 파일에 쓰면서 동시에 화면에 출력값을 보여주고자 하는 경우가 있을 것이다.

xterm -e "cd~; python3 test.py 2>&1 | tee ~/test.txt"

(test.py가 실행시키려는 파이썬 파일이고, test.txt는 결과를 저장하려는 텍스트 파일이다)

위의 커멘드를 실행시키면 xterm 상에는 아무 결과값도 안 뜨게 된다.

 

그 이유는 파이썬에서 stdout 버퍼에 의해서 버퍼링이 되고 있어서 결과값을 출력하지 않고 그저 버퍼링만 하고 있는 것이다.

이 문제를 해결하기 위해서는 파이썬 실행 시에 "-u" 옵션을 추가하면 된다.

xterm -e "cd~; python3 -u test.py 2>&1 | tee ~/test.txt"

 

https://stackoverflow.com/a/21663010/9012940

 

linux tee is not working with python?

I made a python script which communicates with a web server using an infinite loop. I want to log every communication data to a file and also monitor them from terminal at same time. so I used tee

stackoverflow.com

 

반응형