在java代码中运行python脚本时出现问题

时间:2009-08-21 11:52:17

标签: java python

当我从下面的java代码运行python脚本时,输入文件作为python脚本的参数以及“-v”选项给出,我得到一个IOException

String pythonScriptPath="\"C:\\Program Files\\bin\\CsvFile.py\"";
String Filepath="C:\\Documents and Settings\\user\\Desktop\\arbit.csv";
String[] cmd = new String[4];
cmd[0] = "python";
cmd[1] = pythonScriptPath;
cmd[2] = "-v";
cmd[3] = Filepath;
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);

以下是错误:

CreateProcess: python "C:\Program Files\bin\CsvFile.py" -v "C:\Documents and Settings\user \Desktop\arbit.csv" error=2
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(Unknown Source)
    at java.lang.ProcessImpl.start(Unknown Source)
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)

有人可以让我知道如何解决这个例外。

感谢你, 哈尔沙

4 个答案:

答案 0 :(得分:2)

error=2表示Win32 CreateProcess函数返回错误代码2或ERROR_FILE_NOT_FOUND。要么找不到您的脚本,要么(更有可能是IMO)找不到python.exe。如果是后者,请确保您的Python安装(可能C:\Program Files\Python\bin,虽然我不确定)在您的系统路径中。

您可以通过进入控制面板并打开“系统”来更改系统路径。如果您使用的是Vista或7,请单击“高级系统设置”;如果您使用的是XP或2000,请选择“高级”选项卡。点击“环境变量”,在“系统变量”下找到“路径”或“路径”,并将Python bin目录添加到字符串的开头(以分号分隔)。

答案 1 :(得分:0)

您不需要所有额外的报价。

String pythonScriptPath="C:\\Program Files\\bin\\CsvFile.py";

这应该可以正常工作。

答案 2 :(得分:0)

  1. Python在你的道路上?我很有可能通过一条路径来确定你正在挑选哪个python(如果有的话)
  2. 您不需要围绕Python脚本参数的引号

答案 3 :(得分:0)

您的变量Filepath与您根据程序输出实际发送的变量不匹配。该错误将其列为“C:\ Documents and Settings \ user \ Desktop \ arbit.csv”,在用户配置文件名称后面有一个无关的空格,这是导致找不到文件错误的最可能原因。