我想为使用python的bash会话编写一个包装器。 我做的第一件事就是尝试产生一个bash过程,然后尝试读取其输出。像这样:使用子进程执行bash.Popen
from subprocess import Popen, PIPE
bash = Popen("bash", stdin = PIPE, stdout = PIPE, stderr = PIPE)
prompt = bash.stdout.read()
bash.stdin.write("ls\n")
ls_output = bash.stdout.read()
但是这不起作用。首先,在创建过程之后从bash的stdout中读取失败,并且当我尝试写入stdin时,发现管道错误。 我在做什么错?
只是为了再次澄清,我没有兴趣在运行bash的通过一个命令,然后检索它的输出,我想有一些过程与我可以通过沟通管道运行bash命令。
听起来像是你需要一个期待模块:http://www.noah.org/wiki/pexpect#Q:_Why_not_just_use_a_pipe_.28popen.28.29.29.3F –
OK,我想我找到我需要的东西。 Python有一个名为pty的模块,它带有一个fork,它在类似终端的环境中产生一个子进程并返回一个读/写fd给它。然后,我可以对孩子执行任务。 –