我正在努力将子进程与python一起使用。 这是我的任务:

  1. 通过命令行启动api(这与在命令行上运行任何参数没有什么不同)
  2. 验证我的API是否已启动。 最简单的方法是轮询标准。
  3. 针对API运行命令。 当我能够运行新命令时出现命令提示符
  4. 通过轮询标准输出来验证命令是否完成(API不支持日志记录)

到目前为止,我尝试过的是:
1.我使用Popen卡在这里。 我知道,如果我使用subprocess.call("put command here")可以正常工作。 我想尝试使用类似于以下内容的内容:

import subprocess

def run_command(command):
  p = subprocess.Popen(command, shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.STDOUT)

我在哪里使用run_command("insert command here")但这没有任何作用。

关于2.我认为答案应该类似于这里: 从Python运行shell命令并捕获输出 ,但是由于我无法使1.正常工作,所以我还没有尝试过。

===============>>#1 票数:8 已采纳

为了至少真正启动子流程,您必须告诉Popen对象真正进行通信。

def run_command(command):
    p = subprocess.Popen(command, shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT)
    return p.communicate()

===============>>#2 票数:7

您可以查看Pexpect ,这是专门设计用于与基于Shell的程序进行交互的模块。

例如,启动scp命令并等待密码提示,您可以执行以下操作:

child = pexpect.spawn('scp foo myname@host.example.com:.')
child.expect ('Password:')
child.sendline (mypassword)

有关Python 3版本,请参见Pexpect-u

  ask by strangenewstar translate from so

未解决问题?本站智能推荐:

1回复

使用Pyinstaller的Python子进程Popen

我使用ffmpeg转换一些视频。 我用subprocess.Popen(...)调用命令 我用这种方法杀了 这是没有编译到exe的okey。 但我编译与pyinstaller与--noconsole子--noconsole无法正常工作。 我必须将subprocess.P
1回复

子进程,Popen Python

我想运行一个程序,比如MATLAB或其他来自Python的FEA软件,等待它运行并存储结果,然后再用Python进行处理。 我无法找到一个关于如何这样做的真正基本的例子。 一个简单的代码或任何有用的链接将受到高度赞赏。 Subprocess模块​​的帮助看起来有点复杂。
3回复

Popen子进程Python

我正在使用Popen进行远程调用脚本 stdout = s.communicate() 打印标准输出 该脚本不会以shell脚本中提到的状态退出,而是仅显示成功或失败状态。 我想根据外壳脚本退出状态代码。 这是shell脚本 如何获得状态码返回?
1回复

在子进程中使用管道

我想将一个命令的输出传递给另一个命令。 必须在命令1执行完成之后运行命令2,依此类推。 我尝试使用'subprocess.Popen()'的'wait'。 但是它不起作用。 有人可以帮我吗? 使用的代码:
1回复

Python子进程.Popen使用git pager

我陷入无法通过core.pager运行“ git show”的python子进程调用的问题。 在我的〜/ .gitconfig中,我指定了一个核心寻呼机。 当我通过子进程(Popen或check_output)运行它时 我得到的输出还没有通过cat分页器运行(行以'$'结尾
2回复

Python对Popen子进程使用超时

我用popen运行以下脚本 我需要处理存储在out变量中的输出 问题是该脚本的执行时间不同,如果超过60秒,我需要将其杀死。 我知道python 3的check_call超时了,但是我正在运行的另一个脚本是python 2.7 那么我怎么数60秒然后杀死子进程呢? 如果发
1回复

使用更改环境的命令在python中创建子进程Popen

我正在尝试使用子流程模块从python运行python脚本并按顺序执行脚本。 我试图在UNIX中执行此操作,但是在新外壳中启动python之前,我需要执行一个命令(ppack_gnu),该命令设置python的环境(并在控制台中打印一些行)。 问题是,当我从python子进程运行此命令时
1回复

Python定时子进程.Popen

我有以下代码从webscrape获取数据。 我才刚刚学会了如何使用 而且我正在尝试撤销我的倡议以及其他类似问题的答案,以解决如何使用 执行以下脚本,以便每30秒左右更新一次webscrape数据到我的插入字段中。 但这是行不通的。 请您指出正确的方向吗? 我得到的错误是错误No 22:无
1回复

Python子进程.Popen挂起

我查看了先前提出的问题,但没有找到类似的问题。 我错过了一个,请让我知道,对于再次提出同样的问题,我深表歉意。 我正在调试以下代码(python 2.6)时我将Popen挂起的问题: 如果我改为使用“调用”阻止方法,也会发生这种情况。 目前仅在此一个节点上发生此问题。 它运行
1回复

在Python 2.5中使用subprocess.Popen访问子进程创建的文件描述符

Python 2.5是否可以访问由subprocess.Popen()子进程打开的文件描述符? 不是专门的输入和输出,而是它创建的其他管道? 如果是这样,我该怎么做? 感谢帮助。