例如,program1.py调用program2.py:
program1.py
subprocess.Popen("program2.py", stdin=subprocess.PIPE).communicate()
program2.py
user_input = input("Yes or No?")
但是当我运行program1时,在我的情况下,program2无法从主进程获取用户输入。它说“读取线条时的EOF”。你能给我一些建议来获取用户的意见。
答案 0 :(得分:0)
您没有将任何数据传递给program2.py
。我假设您正在使用Python 3,使用input
(而不是Python 2中的raw_input
)。我将如何做到这一点:
import subprocess
import sys
cmd = [sys.executable, 'program2.py']
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE)
proc.communicate('Y'.encode())
通过" Y"通过第二个程序。 Python 3中需要encode()
,但Python 2不需要。这是因为Python 3字符串是多字节的,而stdin
流使用单字节字符串,如Python 2字符串。 program2.py
结束时无需进行任何更改。