如何将null值作为参数从java传递给python

时间:2016-08-23 07:16:05

标签: java python

我有一个java方法,它将一些参数传递给python文件。我通过这种方式传递论据:

String name=null;  //can be null or some value in some cases.
....
String[] cmd = {
                      "python",
                      "C:/Python34/myscript.py",
                      name,
                      username,
                      pwd};
Process p=Runtime.getRuntime().exec(cmd);

变量名在某些执行中将为null,但它可能不会,但是当它变为null时,我将获得java.lang.NullPointerException

我的python文件myscript.py将使用空值运行,如果我从命令提示符运行它但我无法从java。

如何在没有异常的情况下传递null值。你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

由于python和java是使用系统调用进行通信的不同进程,因此无法将Java null转换为命令行。

(你在Python中称之为null实际上是None

你可以做的是:将空字符串(""而不是null)传递给python程序,python程序可以解释空字符串并将它们转换为None

或者决定一个约定:如果从java传递"<NULL>"字符串,则在解析args时从python端假设None

Jython等其他解决方案可能允许这样做,因为它们不涉及系统调用。

答案 1 :(得分:0)

不要将它们作为null传递,而是执行NullPointer检查并传入空字符串。

name = name == null ? "" : name;

这样你的python脚本只需要检查空字符串而不是空字符串。您可以通过简单的if检查来检查两者。像下面这样的东西会起作用。

if not name:
    # this will check for both None and "" empty string
    print "name was not passed"