파이썬에 문제가 있습니다. 나는 실행중인 스크립트에서 출력을 얻고 다른 스크립트에서 사용하려고합니다. 그래서 제가하고 싶은 것은 이것과 같습니다.Python으로 실행중인 스크립트에서 stdout을 읽음
out.py
및 in.py
이 이와 같다고 가정하십시오.
# out.py
def main():
while True:
print "test"
time.sleep(10)
main()
# in.py
text = sys.stdin.readline()
print "hello " + text
이 같은 스크립트를 실행하려면,
$ python out.py | python in.py
하지만, 대신에 "안녕하세요 테스트"10 초마다 인쇄이 중지되고 인쇄 아무것도. 이것으로부터, 나는 out.py
이 끝날 때까지 |
이 기다릴 것으로 짐작하고 있습니다. 그렇다면 데비안에서 in.py를 사용하려면 어떻게해야할까요?
내 실제 문제는; arpwatch에서 출력을 얻으려고합니다. arpwatch가 데몬으로 실행되고 ip/mac 쌍을 표준 오류로 보냅니다. 나는 그 산출물을 얻고 그것을 파싱하고 싶다; 그래서 나는 이런 것을 필요로한다.
$ arpwatch | python myscript.py
이 코드를 작성하려면 myscript.py
을 어떻게 작성해야합니까? subprocess module,을 사용하려고했지만 다시 성공하지 못했습니다. 제 영어 실력이 좋았 기 때문에 제 문제를 명확하게 설명 할 수 있기를 바랍니다.
도움 주셔서 감사합니다.
빠른 답장을 보내 주셔서 감사합니다. 매력처럼 작동합니다 : arpwatch에 대해서는 pty를 살펴볼 것입니다. –
@MuhammetCan : 천만에. 'pexpect'에 대해 말한 것을 잊어 버리십시오. 프로세스의 표준 출력만을 읽을 때 필요하지 않습니다. 'pty' 모듈로 충분합니다. –