从 Run program() 执行 python exe我有一个 python 可执行文件(所以我或其他人不需要在电脑上安装 python)它可以分析一些数据......
我想从 JMP 调用并运行它,但我不确定最好的方法,因为我希望能够从 JMP 向这个 python exe 提供变量并获得回报。
我已经使用集成的 python 命令成功地完成了这项工作,但从来没有使用 python exe 文件。 我需要输入的变量之一是数据表。 目前,我需要让 JMP 将表保存为 .csv 的临时位置,然后这个 python exe 可以运行并编辑该 .csv ...然后 JMP 可以打开更新的 CSV(我没有那个流编码在 JSL 中,因为我觉得必须有更好的方法)
有什么想法吗? 我对 Run Command() 的经验很少,所以任何起始指针都将不胜感激:)
谢谢!
脚本编写回复:从 Run program() 执行 python exe使用通过 RunProgram 从 Python 程序构建的可执行文件,或使用 RunProgram 中的 Python 脚本调用 Python 解释器是类似的。 两者都没有使用集成 Python 所具有的集成。 您需要使用 CSV 文件之类的东西将数据发送到 Python 程序并从 Python 程序取回数据。 您还可以将命令行参数传递给 .exe。 (或到 python 解释器。)
在您的情况下,我建议将 CSV 写入 $temp 目录并在 python 中打印结果。 通过命令行传递 csv 路径。 使用 RunProgram(...readfunction("text")...) 检索打印输出的字符串。删除临时目录文件。
回复:从 Run program() 执行 python exe我还没有这样做,目前无法在我的系统上轻松测试它,但看起来您可以从可执行文件的 stdout 读取并使用 JSL 写入可执行文件的 stdin 流: https://community.jmp.com/kvoqx44227/attachments/kvoqx44227/discovery-2016-content/67/1/Run%20Program.pdf
Python 可以从 stdin 读取(并输出到 stdout)作为类似文件的操作: Python - 标准输入、标准输出和标准错误 - AskPython
所以我有理由相信你可以“<<将”你的数据表逐行写入 JMP 的可执行文件的标准输入,使用类似文件的方法从 Python 中的 JMP 读取行,将这些行构造成一个Pandas 数据帧,运行您的 Python 操作,然后将 Pandas 数据帧从 Python 逐行输出到标准输出,并将其反馈给 JMP。
回复:从 Run program() 执行 python exe@Michael_MXAK嗯,这也是一个有趣的想法。 对于较小的文件,它可能工作正常。 其中一些文件可能会变得相当大,因此逐行方法可能不会过于高效...... 不过,这是值得深思的。
Re: 从 Run program() 执行 python exe@Craige_Hales好的,这是有道理的......这就是我所倾向于的地方,但是将信息输出到字符串中进行检索比处理第二个 csv 更容易。