在Python中与其他命令行程序交互
我需要写一个Python脚本,这个脚本可以运行另一个命令行程序,并与它的输入输出流进行互动。简单来说,Python脚本会从目标命令行程序读取数据,聪明地通过写入它的输入流来做出回应,然后再从程序中读取结果。(这个过程会不断重复。)
我查阅了subprocess模块,但似乎无法实现我想要的那种读/写/读/写的功能。我还应该尝试其他什么吗?
2 个回答
4
请查看这个问题:wxPython: 如何创建一个bash shell窗口?
在这里,我展示了如何与bash shell进行完整的互动,包括读取标准输出(stdout)和标准错误(stderr),以及通过标准输入(stdin)进行通信。
主要部分是这个代码的扩展。
bp = Popen('bash', shell=False, stdout=PIPE, stdin=PIPE, stderr=PIPE)
bp.stdin.write("ls\n")
bp.stdout.readline()
如果我们读取所有数据,程序会被阻塞,所以我提供的脚本链接是通过线程来处理的。这是一个完整的wxPython应用程序,部分模拟了bash shell的功能。