在Python中,可以使用subprocess
模块来创建子进程并执行命令。要响应多个输入,可以使用communicate()
方法与子进程进行交互。
下面是一个示例代码,演示如何使用Python子进程执行命令并响应多个输入:
import subprocess
def execute_command(command, inputs):
# 创建子进程并执行命令
process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
# 向子进程发送多个输入
for input_data in inputs:
process.stdin.write(input_data.encode())
process.stdin.flush()
# 关闭子进程的输入流
process.stdin.close()
# 获取子进程的输出结果
output, error = process.communicate()
# 打印输出结果
print("Output:")
print(output.decode())
# 打印错误信息
print("Error:")
print(error.decode())
# 要执行的命令
command = "python my_script.py"
# 要发送给子进程的输入数据
inputs = [
"input1\n",
"input2\n",
"input3\n"
]
# 执行命令并响应多个输入
execute_command(command, inputs)
在上述示例中,execute_command()
函数接受两个参数:command
表示要执行的命令,inputs
表示要发送给子进程的输入数据列表。
首先,使用subprocess.Popen()
创建子进程并执行命令。stdin=subprocess.PIPE
表示将子进程的标准输入连接到管道,stdout=subprocess.PIPE
表示将子进程的标准输出连接到管道,stderr=subprocess.PIPE
表示将子进程的标准错误连接到管道,shell=True
表示使用系统的shell来执行命令。
然后,使用process.stdin.write()
向子进程发送多个输入数据,并使用process.stdin.flush()
刷新输入流。
接下来,关闭子进程的输入流,以便子进程知道不会再有更多的输入。
然后,使用process.communicate()
获取子进程的输出结果和错误信息。communicate()
方法会阻塞当前进程,直到子进程执行完毕。
最后,打印输出结果和错误信息。
请注意,上述示例中的命令是一个示例,你可以根据实际需求替换为你想要执行的命令。
此外,关于Python子进程的更多详细信息,你可以参考腾讯云的产品文档:Python子进程。
领取专属 10元无门槛券
手把手带您无忧上云