我关于stackoverflow的第一个问题!
我试图弄清楚如何启动一个需要用户与之交互的外部程序,比如 vi、nano、ssh、telnet 等,并在程序退出时返回 Python 脚本。
我根本不想使用发送/期望或自动化外部程序,只需启动它,正常使用它,然后返回脚本。我想 bash 似乎是一种更自然的方式来做到这一点,但我希望用 Python 来完成它。
我关于stackoverflow的第一个问题!
我试图弄清楚如何启动一个需要用户与之交互的外部程序,比如 vi、nano、ssh、telnet 等,并在程序退出时返回 Python 脚本。
我根本不想使用发送/期望或自动化外部程序,只需启动它,正常使用它,然后返回脚本。我想 bash 似乎是一种更自然的方式来做到这一点,但我希望用 Python 来完成它。
使用集成subprocess
模块。它适用于交互式应用程序。subprocess.call
启动应用程序并阻塞,直到应用程序退出。
例如,启动vi
和退出后它开始与 127.0.0.1 的连接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()
您可以在此处找到更多信息:子流程