2012-09-25 4 views
3

키보드를 사용하여 프롬프트에 응답 할 때 발생하는 stdin의 반향을 억제해야하는 Python 스크립트가 있습니다.raw_input()이 파이썬의 키보드에서 왔는지 확인하는 방법

키보드를 사용할 때 VT100 제어 코드를 사용하여 한 줄 위로 이동하고 줄을 지운 다음 다른 줄을 위로 이동하여 출력이 새로 채워진 줄을 지울 수 있습니다.

그러나,이 코드는 출력을 엉망 및 입력 파일에서 올 때 유효한 출력의 라인을 삭제 끝 (즉, cat test | myscript.py, 표준 입력은 분명히이 경우 표준 출력에 아무것도 표시하지 않기 때문에.

입력이 스크립트로 보내지는 방법을 제어 할 수 없으며 사용자가 키보드 또는 파일을 사용할 지 여부를 모르겠습니다.

raw_input()의 출력을 검사 할 수있는 방법이 있습니까? 키보드에서 입력을받은 경우 VT100 제어 코드를 실행하십시오.

답변

7

원하는 기능은 다음과 같습니다. 파일 핸들에 대한 atty ("tty"입니다). sys.stdin, sys.stdout 또는 sys.stderr에서 필요에 따라 테스트 할 수 있습니다.

+0

그래, 완벽하게 작동합니다. 감사! – javanix

+0

호기심에서 벗어나 스크립트에 렌치를 던질 수있는 TTY 입력을 "스크립팅"할 수있는 방법이 있습니까? – javanix

+0

예, 있지만 파이프를 통해 작동하지 않습니다. pty 모듈을 참조하십시오. 당신의 목적이 단지 echo를 모두 비활성화시키는 것이라면, Ignacio가 말한 것처럼 (isatty를 테스트 한 후에); 어쨌든 껍질과 편집자가 사용하는 것입니다. –

1

"... suppress the echo of stdin ..." 다음

가하라는 메시지를 표시하는 기능입니다 | (파이썬 단지 고양이를 시도)

>>> import sys 
>>> sys.stdin.isatty() 
True 

덧붙여, 즉 파이썬은 대화 형 프롬프트를 표시할지 여부를 감지 너무하고있는 것입니다 에코가 꺼져있는 암호 ...

관련 문제