python输出命令_用Python获取命令行输出

Python在慢慢成为脑影像数据处理中的主流语言。而在做脑影像处理时,不免有时候需要用到一些别人开发好的工具包,而这些包并不都是python包。比如对方采用C写好了算法,我们觉得这个算法很好,用在自己的数据上应该会有不错的结果。我在处理脑影像数据时遇到下面的情况:

需要用的工具包是C写的,那第一件事就是需要在运行该脚本的机器上重新编译该代码为可执行的程序,也就是用`make`了。

产生可执行文件后,在Terminal中执行测试,可以正常运行,发现结果以print到屏幕上的形式给出。

通常我采用python进行脑影像数据的读写,在读取数据后并进行一定的预处理后,需要循环调用上面提及的可执行程序,并获取其输出的结果。这时候如何来实现呢?显然,常用的’os.system()’是搞不定的,引起它只会返回程序的执行状态。下面是在网上查到的几种方案,尝试过都可以work。

下面是测试用的可执行程序的字符串。

mmcmd = ' '.join(['MMxnyn', infile, str(kneig)])

方案一:

import commands

status, output = commands.getstatusoutput(micmd)

mi = output

方案二:

import subprocess

res = subprocess.Popen(micmd, shell=True, stdout=subprocess.PIPE,

stderr=subprocess.PIPE, close_fds=True)

mi = res.stdout.readlines()

mi = float((mi[0].strip()))

注:这里只用到了可执行程序输出的第一行,并转成float型返回。

方案三:

import os

p = os.popen(' '.join(['MIxnyn', zwspfile, str(Ndx), str(Ndy), str(N), str(kneig)]))

mi = p.read()

mi = mi.strip()

留案备查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值