Python 스크립트가 수동 입력을 기다리는 시기 식별

Python 스크립트가 수동 입력을 기다리는 시기 식별

저는 Python 스크립트를 실행하는 쉘 스크립트를 작성 중입니다. Python 스크립트는 수동 입력을 제공하기 위해 일시 ​​중지됩니다. 그러나 스크립트에서 매번 Enter 키를 누르고 싶지는 않습니다. 대신 실행 중인 셸 스크립트에서 수동 입력을 전달하고 싶습니다.

도와주세요. 방법이 있나요?

답변1

입력이 하나만 필요한 경우 echo파이프를 사용하면 됩니다.

echo | python script.py

echo빈 줄(개행 포함)을 표준 출력으로 인쇄한 다음 Python 스크립트의 입력으로 리디렉션합니다.사용|. Python이 표준 입력에서 읽을 때 빈 줄을 얻고 계속됩니다.

스크립트에서 Enter 키를 여러 번 눌러야 하는 경우 다음을 사용할 수 있습니다.yes주문하다그리고 파이프:

yes "" | python script.py

yes명령은 동일한 행을 표준 출력에 계속해서 인쇄합니다. 기본적으로 문자열은 이지만 y여기서는 빈 문자열로 설정하므로 항상 개행 문자가 됩니다.


특정 프롬프트에 대한 응답으로 입력이 필요하고 다른 경우에는 다른 입력이 필요한 경우 다음을 사용하십시오.expect, 이는 "대화형 프로그램과 자동으로 상호 작용할 수 있게 해주는 Tcl 확장입니다."

Python의 출력을 읽고 이에 대한 새 입력을 생성하도록 쉘 스크립트를 작성하는 것이 가능하지만 특별히 권장하지는 않습니다. 이렇게 하고 싶다면 참조하세요고급 Bash 스크립팅 가이드의 IO 리디렉션: 이 작업을 수행하려면 파일 설명자를 복제해야 합니다. 당신은 또한 사용할 수 있습니다mkfifo명명된 파이프 파일을 생성한 다음 정상적으로 읽고 씁니다.

솔직히 말해서 다음 중 하나를 수행하는 지점에 도달하면 대안에 대해 생각하기 시작할 것입니다. 쉘 스크립트는 이를 위해 만들어지지 않았으며 예를 들어 Python 자체에서 스크립트를 작성하는 것이 더 간단할 것입니다.

관련 정보