Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过传递参数运行Python脚本时Process Builder出错_Java_Python - Fatal编程技术网

Java 通过传递参数运行Python脚本时Process Builder出错

Java 通过传递参数运行Python脚本时Process Builder出错,java,python,Java,Python,我有一个Python脚本要使用javaProcessBuilder运行。Python脚本需要2个参数 Arg1: H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb Arg2: 下面是我传递给ProcessBuilder执行的字符串数组 [C:\Pythion27

我有一个Python脚本要使用javaProcessBuilder运行。Python脚本需要2个参数

Arg1:

H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb
Arg2:

下面是我传递给ProcessBuilder执行的字符串数组

[C:\Pythion27\Python.exe,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_Build_Script.v.6.2_2017.12.08\Script.1-2_Trunk_20170609\Src\PY\ComcastNetworkProcessing\ComcastNetworkProcessing.py,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ > H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ\logs\BBB2_NB_Script1_AZ.txt]
当我在上面使用ProcessBuilder生成并运行时,会收到提示消息,提示python.exe停止工作,并在命令提示符下给出退出值1073741819。当我在命令提示符下直接运行相同的命令时,它正在执行,没有任何错误


有人能帮我吗?我如何使用java ProcessBuilder运行它。

只在shell中有特殊的含义,比如cmd.exe

目前,您正在向Python传递一个很长的文件名,其中包括空格和

重定向ProcessBuilder输出的正确方法是使用其方法:


只是一个预感:尝试用普通的正向斜杠替换反斜杠用正向斜杠替换反斜杠,但没有相同的错误。感谢您的回答,我有一个疑问,当我在命令提示符中运行相同的命令时,是否可以完美地执行(还有更多问题,是否有任何方法我只能将命令传递给python,而python必须负责编写输出).正如我指出的,
在命令提示符(cmd.exe)中是特殊的。当cmd.exe(或Unix shell)看到该字符时,它假定该字符表示要执行的命令的结束,并且下面的文件名是命令输出将重定向到的目标文件。非常感谢您的解释。让我试试你的建议。
[C:\Pythion27\Python.exe,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_Build_Script.v.6.2_2017.12.08\Script.1-2_Trunk_20170609\Src\PY\ComcastNetworkProcessing\ComcastNetworkProcessing.py,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ > H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ\logs\BBB2_NB_Script1_AZ.txt]
ProcessBuilder builder = new ProcessBuilder(
    "C:\\Pythion27\\Python.exe",
    "H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_Build_Script.v.6.2_2017.12.08\\Script.1-2_Trunk_20170609\\Src\\PY\\ComcastNetworkProcessing\\ComcastNetworkProcessing.py",
    "H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\eGIS.CoE.Network_Clips\\Network_ETLs\\eGIS.CoE.Network_Clip\\MOUNTAINWEST_AZ.gdb",
    "H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_DS_ProBuild\\Wp4\\Network_Build_00_00_0000\\WD_Mountainwest_AZ");

builder.redirectOutput(new File(
    "H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_DS_ProBuild\\Wp4\\Network_Build_00_00_0000\\WD_Mountainwest_AZ\\logs\\BBB2_NB_Script1_AZ.txt"));