在Python中使用子进程时,如何从主进程获取用户输入

时间:2013-04-09 14:59:23

标签: python subprocess

例如,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”。你能给我一些建议来获取用户的意见。

1 个答案:

答案 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结束时无需进行任何更改。