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