如何在python中与终端进行交互

时间:2014-09-12 19:03:30

标签: python terminal subprocess

我正在处理一个小脚本。该脚本应该打开3个终端并独立地与这些终端进行交互。

我很明白,子进程是最好的方法。到目前为止我做了什么:

# /usr/bin/env python
import subprocess

term1 = subprocess.Popen(["open", "-a", "Terminal"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
term1.communicate(input="pwd")

我的问题是我无法与新终端互动。这部分term1.communicate(input="pwd")无效。我无法向新终端发送命令。我也试过term1.communicate(input="pwd\n")但没有任何事情发生

你有什么想法我该怎么做?

P.S。我正在使用Mac OS。

1 个答案:

答案 0 :(得分:2)

您可以同时运行这两个命令而无需打开终端。

import subprocess
process1 = subprocess.Popen(["ls", "-l"])
process2 = subprocess.Popen(["ls", "-l"])

如果您运行该代码,您将看到该目录列出两次,交错在一起。您可以根据自己的特定需求进行扩展:

tcprelay1 = subprocess.Popen(["tcprelay", "telnet"])
tcprelay2 = subprocess.Popen(["tcprelay", "--portoffset [arg1] [arg2]")