3

我关于stackoverflow的第一个问题!

我试图弄清楚如何启动一个需要用户与之交互的外部程序,比如 vi、nano、ssh、telnet 等,并在程序退出时返回 Python 脚本。

我根本不想使用发送/期望或自动化外部程序,只需启动它,正常使用它,然后返回脚本。我想 bash 似乎是一种更自然的方式来做到这一点,但我希望用 Python 来完成它。

4

2 回答 2

1

使用集成subprocess模块。它适用于交互式应用程序。subprocess.call启动应用程序并阻塞,直到应用程序退出。

例如,启动vi和退出后它开始与 127.0.0.1 的连接ssh

import subprocess
subprocess.call(["vi"])
subprocess.call(["ssh","127.0.0.1"])
于 2016-05-11T11:08:09.477 回答
-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()

您可以在此处找到更多信息:子流程

于 2016-05-11T11:14:36.813 回答