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

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

저는 Python 스크립트를 실행하는 쉘 스크립트를 작성 중입니다. 수동 입력이 제공되도록 Python 스크립트가 중지됩니다. 그러나 스크립트를 실행할 때마다 Enter 키를 누르고 싶지는 않습니다. 대신 실행 중인 셸 스크립트에서 수동 입력을 전달하고 싶습니다.

혹시 방법이 있다면 도와주세요.

답변1

Enter가 하나만 필요한 경우 echo및 파이프를 사용하십시오.

echo | python script.py

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

스크립트가 둘 이상의 Enter 키를 원하는 경우 다음을 사용할 수 있습니다.yes명령그리고 파이프:

yes "" | python script.py

yes명령은 동일한 행을 표준 출력에 계속해서 인쇄합니다. 기본적으로 문자열은 이지만 y여기서는 빈 문자열로 만들어 영원히 개행 문자로 사용합니다.


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

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

솔직히 말해서 이러한 접근 방식 중 하나를 수행하려는 지점에 도달하면 대체 접근 방식에 대해 생각하기 시작할 것입니다. 쉘 스크립팅은 이를 위해 구축되지 않았으며 스크립트를 작성하는 것이 훨씬 더 간단할 것입니다. 파이썬 그 자체.

관련 정보