当前位置: 首页 > 知识库问答 >
问题:

在Java中向Python脚本传递参数

韩博厚
2023-03-14

我正在一个java类中运行一个python脚本,如下所示:

PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");

问题在于脚本。py通常采用如下命令行参数:

Pythonscript.py-i C:/diretory/path-o C:/目录/路径

有可能在Java中通过PythonTeperter传递这些参数吗?

更新:

感谢Juned Ahsan我的代码现在是这样的:

String[] args = {"-i " + lawlinkerIfolder.toString() + " -o " + lawlinkerOfolder.toString()};
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), args);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");

但是脚本仍然没有得到任何参数。

我这样用对了吗?

共有2个答案

施赞
2023-03-14

我有同样的问题,发现可以通过使用“interned”字符串解决,即。,

for (int i = 0; i args.length; ++i) {
    args[i] = args[i].intern();
}

我正在使用Jython2.5.3。希望这会有所帮助。

岑明辉
2023-03-14

以下调用中的最后一个参数用于命令行参数:

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);

来自PythronInterpreter javadocs:

初始化

公共静态void初始化(属性预属性、属性后属性、字符串[]argv)

初始化Jython运行时。在创建任何其他Python对象(包括PythonInterpreter)之前,只能调用一次。参数:预属性-一组属性。通常是系统。使用getProperties()。预属性覆盖注册表文件中的属性。后属性-另一组属性。类似python的值。回家,python。可以将注册表文件中的路径和所有其他值添加到此属性集。后特性覆盖系统特性和注册表特性。argv-命令行参数,分配给sys.argv。

 类似资料:
  • 我希望能够将参数从docker-compose file>dockerfile传递到运行接受参数的python脚本的cmd/entrypoint 请协助,也许我在这里遗漏了什么或者只是没有正确理解。 谢谢!

  • 好吧,所以这是已经问过的问题,但答案似乎没有多大帮助。我能够使用jython和该问题中发布的答案运行python脚本,但我无法传递变量...当我运行程序时,错误说没有像arg1 arg2和arg3这样的变量...我做错了什么? 这是python脚本 现在错误说arg1 arg2和arg3未声明

  • 我试图使用jython在java中执行python脚本。重要的是,我需要使用jython将命令行参数传递给脚本,例如myscript。py arg1 arg2 arg3。这里有一个类似的问题:将参数传递到Java中的Python脚本 这没有得到完全的回答(所有解决方案都不起作用)。 我的代码现在看起来像这样: 然而,这似乎没有向python脚本传递任何参数。对如何正确地做这件事有什么建议吗?这一定

  • 这里是HTML文件,在脚本部分,我发出了一个ajax请求,将一些字符串传递给python函数。 在中,我设置了python脚本的路径。Python文件,我希望在该文件中从JS获取所请求的数据并将其打印出来。 注意:这里我没有使用任何框架。只是纯HTML、JS和Python文件。

  • 问题内容: 我是Python和Eclipse的新手,在理解如何将命令行参数传递给在Eclipse(Pydev)中运行的脚本时遇到一些困难。 以下链接说明了如何将命令行参数传递给python脚本。 要将命令行参数传递给模块(来自上面链接的代码), 我需要输入python控制台 要么 如何在Eclipse(Pydev)中将相同的参数传递给Python脚本? 谢谢 ! 问题答案: 如果您希望程序以交互方

  • 问题内容: 我有一个名为“ gcc_opt.pyw”的Python脚本,并将其目录包含在Windows PATH环境变量中。 但是不会将单个命令行参数传递给脚本。打印出sys.argv会告诉我argv列表中只有文件名。 该命令: 结果是 你能告诉我为什么没有其他论点吗? 我不知道它是否重要,但是我将python.exe设置为执行.pyw文件的默认程序,因为我看不到使用pythonw.exe的任何打