0

例如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”。你能给我一些建议以获得用户输入吗?

4

1 回答 1

0

您没有将任何数据传递给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

于 2013-04-09T15:17:48.800 回答