繁体   English   中英

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

[英]How can I get user input from main process when using subprocess in Python

例如,program1.py调用program2.py:

程式1

subprocess.Popen("program2.py", stdin=subprocess.PIPE).communicate()

program2.py

user_input = input("Yes or No?")

但是,当我运行program1时,program2无法从我的主进程中获取用户输入。 它说“读取行时的EOF”。 您能否给我一些建议以获取用户输入。

您没有将任何数据传递给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结束时不需要任何更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM