将变量从python传递到imagej宏

时间:2019-07-15 07:52:16

标签: python imagej

我是python的新手。我想做的是使用subprocess.Popen或subprocess.call将变量从python传递到imagej宏,但是我对如何形成所需的参数感到困惑。我搜索了所有帖子,但没有找到任何地方。

我尝试了几种不同的方式,例如:

subprocess.Popen(["C://Users//user//Desktop//ij150-win-jre6//ImageJ.exe", "C://Users//user//Desktop//ij150-win-jre6//plugins//test.ijm"], stdin=PIPE, --p)
subprocess.Popen(["C://Users//user//Desktop//ij150-win-jre6//ImageJ.exe", "C://Users//user//Desktop//ij150-win-jre6//plugins//test.ijm"], p)
subprocess.Popen(["C://Users//user//Desktop//ij150-win-jre6//ImageJ.exe", "C://Users//user//Desktop//ij150-win-jre6//plugins//test.ijm", p])

下面是python中的代码

import subprocess

p="test"

subprocess.Popen(["C://Users//name//Desktop//ij150-win-jre6//ImageJ.exe", "C://Users//name//Desktop//ij150-win-jre6//plugins//test.ijm"], stdin=PIPE, --p)

下面是来自imagej的代码

function testing(p)
{
    print (p);
}

我已经尝试了上述几种方法,但是不断收到诸如“位置参数跟随关键字参数”和“'str'对象没有属性'fileno'”之类的错误。我怀疑在imagej端编码可能是错误的,但我不确定如何。我只尝试打印(p),但是在imagej中发生了错误。

基本上我希望imagej宏读取python提供的变量(在本例中为'p'),然后在imagej中打印出该变量。 有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

经过多次尝试和谷歌搜索,我终于找到了答案。调用imagej程序和脚本以及将变量传递给脚本的python代码如下:

process = subprocess.Popen('imagej.exe --console -macro script.ijm variable', stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

为了使script.ijm接收自变量,脚本必须具有以下行:

Input = getArgument();

现在我正试图找出如何将script.ijm输出信息输出到python。