두 개 (관련?) 질문은 여기에 있습니다.Popen에 의해 호출되고 stdin에 쓰여질 때 Python 이상한 동작
외부 프로세스를 시작하기 위해 프로그램을 작성하려고 시도한 다음에 simultaniouly stdout에서 읽고 stdin에 씁니다. 모든 것이 작동하는 것처럼 보였지만 프로세스가 표준 파이프로 전송 된 데이터에 응답하지 않았습니다. 왜 이렇게 될지 아십니까? (1)
이 두 번째 질문은 지금 해결되었습니다.
나는 처음과 같은했다,이 테스트 스크립트를 작성 :
# recv.py
while True:
print(input())
두 번째 (가) 그것을 어떤 임의의 입력을주고는 popen을 사용하여 다른 전화하도록 설계되었습니다 :
# send.py
recv = subprocess.Popen(["python", "recv.py"], stdin=subprocess.PIPE)
recv.stdin.write(b"Hello\n")
recv.stdin.write(b"World.\n")
이를
[email protected]:testing$ python send.py
[email protected]:testing$ Traceback (most recent call last):
File "recv.py", line 30, in <module>
main()
File "recv.py", line 26, in main
print(input())
File "<string>", line 1, in <module>
NameError: name 'Hello' is not defined
마치 whatev처럼 보입니다. 그 이유는 input()
의 결과가 문자열 대신에 줄의 일부처럼 다루어지고 있기 때문입니다. 실제로 recv.py에 변수 Hello
을 설정하면 Hello
의 내용이 출력됩니다. 이 문제가 발생하는 이유는 무엇입니까? (2)
저는 Mac OSX에서 python 3.1.2를 실행하고 있습니다. 당신이보고있는 무엇
아마 (1)에 대한 답을 격려하기 위해 코드에 대한보다 명쾌한 설명을 제공해야합니다. – chisaipete