无法从java代码启动python脚本
我有java代码来调用python脚本 Java无法从java代码启动python脚本,java,python,Java,Python,我有java代码来调用python脚本 Java private void visualizeData() { try{ Runtime.getRuntime().exec(“python pyScripts/visualize.py”) } catch (IOException e){ e.printStackTrace(); } } 这是我的visualize.py代码: 可视化.py from mpl_toolkits.mplot3
private void visualizeData() {
try{
Runtime.getRuntime().exec(“python pyScripts/visualize.py”)
} catch (IOException e){
e.printStackTrace();
}
}
这是我的visualize.py代码:
可视化.py
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pylot as plt
f = open(“ecoli_data_transformed.txt”,”r”)
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
for line in f:
(a, b, c) = line.split(“\t”)
a = float(a)
b = float(b)
c = float(c)
ax.scatter(a,b,c)
ax.setxlabel(‘PCA1’)
ax.setylabel(‘PCA2’)
ax.setzlabel(‘PCA3’)
plt.show()
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pylot as plt
import numpy as np
np.random.seed(19680801)
def randrange(n, min, vmcx):
return (vmax - vein)*np.random.rand(n) + vmin
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
n = 100
for c, m, slow, high in [(‘r’, ‘o’, -50, -25), (‘b’, ‘^’, -30, -5)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zlow, zhigh)
ax.scatter(xs, ys, zs, c=c, marker=m)
ax.set_xlabel(‘X Label’)
ax.set_ylabel(‘Y Label’)
ax.set_zlabel(‘Z Label’)
plt.show()
但它没有绘制数据
如果我从java代码中调用test.py脚本(test.py与visualize.py位于同一目录中),它可以工作:
test.py
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pylot as plt
f = open(“ecoli_data_transformed.txt”,”r”)
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
for line in f:
(a, b, c) = line.split(“\t”)
a = float(a)
b = float(b)
c = float(c)
ax.scatter(a,b,c)
ax.setxlabel(‘PCA1’)
ax.setylabel(‘PCA2’)
ax.setzlabel(‘PCA3’)
plt.show()
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pylot as plt
import numpy as np
np.random.seed(19680801)
def randrange(n, min, vmcx):
return (vmax - vein)*np.random.rand(n) + vmin
fig = plt.figure()
ax = fig.add_subplot(111, projection=‘3d’)
n = 100
for c, m, slow, high in [(‘r’, ‘o’, -50, -25), (‘b’, ‘^’, -30, -5)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zlow, zhigh)
ax.scatter(xs, ys, zs, c=c, marker=m)
ax.set_xlabel(‘X Label’)
ax.set_ylabel(‘Y Label’)
ax.set_zlabel(‘Z Label’)
plt.show()
有什么问题吗
*注意:通过“python visualize.py”从控制台调用visualize.py脚本非常好。在python脚本中传递给
open()
命令的相对路径可能是问题所在
Java程序所在的目录与Python程序所在的目录不同。当它启动python脚本时,当前路径仍然是Java程序的路径
这意味着Python无法找到您试图打开的文件的相对路径,ecoli\u data\u transformed.txt
解决方法是包括.txt文件的完整路径:
更好的解决方案是按程序确定:
请在问题中粘贴代码,而不是附加图片链接。我尝试过,但格式不好。对不起,我是个新手。若要格式化为代码,您应该在编辑器中将选项卡替换为空格,将代码粘贴到此处,选择它并使用可用的代码格式工具(基本上每行代码添加4个空格),然后会发生什么?有例外吗?没有,没有。代码完成,但从未绘制脚本的图形。不是test.py的情况,那里一切都很好。哦,天哪,是的,谢谢!