如何在Python中与终端交互

2 投票
1 回答
7009 浏览
提问于 2025-04-21 09:07

我正在写一个小脚本。这个脚本需要打开三个终端,并且能够独立地与这些终端进行交互。

我知道使用子进程(subprocess)是实现这个功能的最佳方法。到目前为止,我做了以下工作:

# /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"),但也没有任何反应。

你有什么想法可以解决这个问题吗?

附注:我使用的是Mac OS。

1 个回答

4

你可以同时运行这两个命令,而不需要打开多个终端。

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

如果你运行那段代码,你会发现目录被列出了两次,而且是交错在一起的。你可以根据自己的需要来扩展这个功能:

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

撰写回答