我从我的Java代码调用Python脚本 . 这是代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JavaRunCommand {
public static void main(String args[]) throws IOException {
// set up the command and parameter
String pythonScriptPath = "my-path";
String[] cmd = new String[2];
cmd[0] = "python2.6";
cmd[1] = pythonScriptPath;
// create runtime to execute external command
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
// retrieve output from python script
BufferedReader bfr = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line = "";
while ((line = bfr.readLine()) != null) {
// display each output line form python script
System.out.println(line);
}
}
}
python.py 哪个有效
import os
from stat import *
c = 5
print c
python.py 哪个不起作用
import MySQLdb
import os
from stat import *
c = 5
print c
# some database code down
所以,我处于一个关键阶段,我有一个我的创业公司的截止日期,我必须向客户端展示我的MVP项目,我正在考虑像这样调用Python脚本 . 当我打印没有dB连接和MySQLdb库的任何东西时,它工作 . 但是当我包含它们时,它不会运行python脚本 . 这里错了 . 它不是假设运行处理所有输入的过程 . 我安装了MySQLdb,脚本在没有java代码的情况下运行 .
我知道这不是解决问题的最佳方法 . 但为了向客户展示一些东西,我需要这件事 . 有什么建议 ?
1 回答
所以,我发现问题在于我用Java传递的参数来运行python程序 .
第一个参数是 - python 2.6,但它应该只是python而不是某些版本号,因为MySQLdB和python存在兼容性问题 .
我最终决定在python代码中使用MySQL Python连接器而不是MySQLdB . 它像魅力一样工作,问题解决了!