【发布时间】:2016-10-05 10:26:01
【问题描述】:
我正在使用 java 创建 ProcessBuilder 来运行 python。
这两个py都可以在python程序中成功运行。 (这两个py的代码都没有问题)
输入.py:
print 'hello'
number=[3,5,2,0,6]
print number
number.sort()
print number
number.append(0)
print number
print number.count(0)
print number.index(5)
TESTopenBaseOnt.py:
from rdflib import URIRef, Graph, Namespace
from rdflib.plugins.parsers.notation3 import N3Parser
from rdflib.namespace import RDF, OWL, RDFS
from rdflib import URIRef, BNode, Literal
from rdflib import Namespace
from rdflib.namespace import RDF, FOAF, RDFS
from rdflib import Graph
gUpdate = Graph()
print ".> Step....1"
gUpdate.parse("BBCOntology.rdf" )
print ".> Step....2"
print gUpdate.serialize(format='xml')
print ".> Finished......."
#
如您所见。
代码适用于 python:input.py
但是,它不适用于 python:TESTopenBaseOnt.py
这可能是因为 java 无法在 python 中运行 parse 函数。结果表明,程序在step1处停止。
public static void main(String [] args) throws IOException
{
try
{
ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","C:Desktop//searchTestJava//input.py");
// ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","C:Desktop//searchTestJava//TESTopenBaseOnt.py");
Process p = pb.start();
BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println(".........start process.........");
String line = "";
while ((line = bfr.readLine()) != null){
System.out.println("Python Output: " + line);
}
System.out.println("........end process.......");
}catch(Exception e){System.out.println(e);}
}
【问题讨论】:
-
也许你的 py 脚本找不到你的 BBCOntology.rdf 文件,因为 processbuilder 在不同的目录中运行脚本。在解析行中尝试绝对路径
-
非常感谢。我明白了
标签: java python parsing rdf processbuilder