首页 > 软件开发 > PYTHON >

Linux下用Python获取命令行输出的几个方案

来源:互联网 2023-03-16 19:29:24 182

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

需要用的工具包是C写的,那第一件事就是需要在运行该脚本的机器上重新编译该代码为可执行的程序,也就是用`make`了。6ui办公区 - 实用经验教程分享!

产生可执行文件后,在Terminal中执行测试,可以正常运行,发现结果以print到屏幕上的形式给出。6ui办公区 - 实用经验教程分享!

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

下面是测试用的可执行程序的字符串。6ui办公区 - 实用经验教程分享!

mmcmd = ' '.join(['MIxnyn', infile, str(kneig)])6ui办公区 - 实用经验教程分享!

Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

工具/原料

  • 电脑
  • Linux系统
  • Python

方法/步骤

  • 1

    选择要使用的命令行,可以是系统的命令,也可以是从其他渠道获取的已经编译好的命令。这里以MIxnyn为例,搜索MIxnyn MILCA即可。6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 2

    采用terminal和ipython写程序,打开terminal,输入ipython。6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 3

    方案一、采用commands包获取命令行的输出信息。6ui办公区 - 实用经验教程分享!

    import commands6ui办公区 - 实用经验教程分享!

    status, output = commands.getstatusoutput(micmd)6ui办公区 - 实用经验教程分享!

    mi = output6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 4

    方案二、采用subprocess获取命令行的输出信息。6ui办公区 - 实用经验教程分享!

    import subprocess6ui办公区 - 实用经验教程分享!

    res = subprocess.Popen(micmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)6ui办公区 - 实用经验教程分享!

    mi = res.stdout.readlines()6ui办公区 - 实用经验教程分享!

    mi = float((mi[0].strip()))6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 5

    方案三、直接采用os获取命令行的输出信息。6ui办公区 - 实用经验教程分享!

    import os6ui办公区 - 实用经验教程分享!

    p = os.popen(' '.join(['MIxnyn', zwspfile, str(Ndx), str(Ndy), str(N), str(kneig)]))6ui办公区 - 实用经验教程分享!

    mi = p.read()6ui办公区 - 实用经验教程分享!

    mi = mi.strip()6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 6

    在实际的应用过程中,可以根据实现环境和需要选择其中一种方案辅助读取命令行的输出。另外,也可以通过先将命令行输出的内容保存到文本文件,然后再进行读取。6ui办公区 - 实用经验教程分享!

    Linux下用Python获取命令行输出的几个方案6ui办公区 - 实用经验教程分享!

  • 6此文章非法爬取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!6ui办公区 - 实用经验教程分享!


    标签: python编程

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码