如何在python代码中从.jar执行中获取输出?

2024-05-03 10:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写python模块,它执行SQL到DBMS并检索数据。我正在尝试使用JDBCJAR文件,而不是本机DB驱动程序。我想知道如何在python中执行jar文件并从jar执行中获得输出。我想知道如何将SQL字符串传递给jar参数。 这是简化的代码。 任何帮助都非常感谢。

[java代码]

public class GetDBResults {
    public static void main(String[] args) {

        // return sql results
        for(int i=0; i<=100; i++){
            // Is this the proper way to generate the output?
            System.out.println(i+"/t"+i*100+1);
    }
  }
}

[python代码]

subprocess.call( [ 'java','-jar','./GET_DB_DATA.jar' )

# how to get results from jar execution?
# how to pass SQL string to jar execution?

Tags: 模块文件theto数据代码dbsql
3条回答

如果您使用的是Linux,则可以使用os.system命令:

os.system("your_java_file > out_put_file")

此命令将执行文件并将输出打印到输出文件 然后可以读取输出文件。

您可以通过管道读取输出:

>>> from subprocess import Popen, PIPE, STDOUT
>>> p = Popen(['java', '-jar', './GET_DB_DATA.jar'], stdout=PIPE, stderr=STDOUT)
>>> for line in p.stdout:
    print line

至于将字符串传递给stdin,可以通过以下方式实现:

>>> p = Popen(['cat'], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
>>> stdout, stderr = p.communicate(input='passed_string')
>>> print stdout
passed_string

你可以:

with open('output_of_jar.txt','w') as fp :
    subprocess.Popen('java -jar ./GET_DB_DATA.jar',stdout=fp).wait()
with open('output_of_jar.txt') as f :
    output = f.read()
print output

编辑:

stdout=fp表示命令的输出将写入文件output_of_jar.txt

然后您只需使用以下命令读取文件的内容:

with open('output_of_jar.txt') as f :
    output = f.read()
print output

相关问题 更多 >