我有一个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值。你能帮我解决这个问题吗?
答案 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"