繁体   English   中英

Jython中的Python解释器

[英]Python Interpreter in Jython

我要做的就是将参数传递给python解释器,以便可以将其作为模块的参数传递。

例如,我在py文件中定义了以下内容:

    def print_twice(test):
       print test
       print test

我想将参数“ Adam”传递给它,所以我尝试了:

    // Create an instance of the PythonInterpreter
    PythonInterpreter interp = new PythonInterpreter();

    // The exec() method executes strings of code
    interp.exec("import sys");
    interp.exec("print sys");

    PyCode pyTest = interp.compile("Adam", "C:/Users/Adam/workspace/JythonTest/printTwice.py");
    System.out.println(pyTest.toString());

我也尝试过:

        interp.eval("print_twice('Adam')");

我一直在使用以下Jython API,但我不太了解: http : //www.jython.org/javadoc/org/python/util/PythonInterpreter.html#compile%28java.lang.String,%20java .lang.String%29

我将非常感谢您的建议。

谢谢

这应该工作:

interp.exec("import YOUR_PYTHON_FILE.py");
interp.exec("YOUR_PYTHON_FILE.print_twice('Adam')");

在python控制台中,其等效项是:

>>> import YOUR_PYTHON_FILE.py
>>> YOUR_PYTHON_FILE.print_twice('Adam')
Adam
Adam

您不需要显式编译脚本,只需将其导入,解释器将负责编译。 这样的事情(假设printTwice.py在程序的工作目录中:

interp.exec("from printTwice import print_twice");
interp.exec("print_twice('Adam')");

假设print_twice实际上包含print语句, print_twice无需在第二行中使用interp.eval 如果它只是返回一个字符串,那么您可能想要
System.out.println(interp.eval("print_twice('Adam')"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM