将变量从 python 传递给 imagej 宏

Passing variable from python to imagej macro

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

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

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);
}

我已经尝试了上面的几种方法,但不断收到类似 "positional argument follows keyword argument" 和“'str' 对象没有属性 'fileno'” 的错误。我怀疑这可能是 imagej 方面的错误编码,但我不确定如何。我尝试只打印 (p),但 imagej 中出现错误。

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

谢谢。

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

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。