在 Python 中,我如何 shell 退出并与外部程序(比如 vi 或 nano)进行交互以及 return 到 python
In Python, how could I shell out and interact with an external program (say vi or nano) and return to python
我关于 Whosebug 的第一个问题!
我正在尝试弄清楚如何启动一个需要用户与之交互的外部程序,比如 vi、nano、ssh、telnet 等,以及 return 到 Python 程序退出时的脚本。
我根本不想使用 send/expect 或自动化外部程序,只是启动它,正常使用它,然后 return 到脚本。我想 bash 似乎是一种更自然的方法,但我希望在 Python.
中完成它
使用集成 subprocess
module。它与交互式应用程序配合得很好。 subprocess.call
启动应用程序并一直阻塞,直到应用程序退出。
例如启动 vi
并在退出后开始通过 ssh
:
连接到 127.0.0.1
import subprocess
subprocess.call(["vi"])
subprocess.call(["ssh","127.0.0.1"])
您可以使用子流程模块。
示例可能如下所示:
import subprocess
process = subproces.Popen(
[
'path/to/the/executable',
'optional argument',
'more optional arguments',
...
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
out, err = process.communicate()
您可以在这里找到更多信息:subprocess
我关于 Whosebug 的第一个问题!
我正在尝试弄清楚如何启动一个需要用户与之交互的外部程序,比如 vi、nano、ssh、telnet 等,以及 return 到 Python 程序退出时的脚本。
我根本不想使用 send/expect 或自动化外部程序,只是启动它,正常使用它,然后 return 到脚本。我想 bash 似乎是一种更自然的方法,但我希望在 Python.
中完成它使用集成 subprocess
module。它与交互式应用程序配合得很好。 subprocess.call
启动应用程序并一直阻塞,直到应用程序退出。
例如启动 vi
并在退出后开始通过 ssh
:
import subprocess
subprocess.call(["vi"])
subprocess.call(["ssh","127.0.0.1"])
您可以使用子流程模块。 示例可能如下所示:
import subprocess
process = subproces.Popen(
[
'path/to/the/executable',
'optional argument',
'more optional arguments',
...
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
out, err = process.communicate()
您可以在这里找到更多信息:subprocess