我一直在寻找如何通过python执行java jar文件的答案,然后查看:
如何让我的python(2.5版)脚本在文件夹而不是命令行中运行jar文件?
我尝试执行以下操作(我的jar和python文件都在同一目录中):
import os
if __name__ == "__main__":
os.system("java -jar Blender.jar")
Run Code Online (Sandbox Code Playgroud)
和
import subprocess
subprocess.call(['(path)Blender.jar'])
Run Code Online (Sandbox Code Playgroud)
两者都没有奏效.所以,我认为我应该使用Jython,但我认为必须有一种更简单的方法来通过python执行jar文件.
你知道我可能做错了什么吗?或者,是否有其他网站我更多地研究我的问题?
red*_*dow 54
我会这样使用子进程:
import subprocess
subprocess.call(['java', '-jar', 'Blender.jar'])
Run Code Online (Sandbox Code Playgroud)
但是,如果你有一个正确的配置,/proc/sys/fs/binfmt_misc/jar
你应该能够直接运行jar,就像你写的那样.
那么,这正是你得到的错误?请将执行失败的所有输出发布到某处.
小智 10
这对我来说总是有用的:
from subprocess import *
def jarWrapper(*args):
process = Popen(['java', '-jar']+list(args), stdout=PIPE, stderr=PIPE)
ret = []
while process.poll() is None:
line = process.stdout.readline()
if line != '' and line.endswith('\n'):
ret.append(line[:-1])
stdout, stderr = process.communicate()
ret += stdout.split('\n')
if stderr != '':
ret += stderr.split('\n')
ret.remove('')
return ret
args = ['myJarFile.jar', 'arg1', 'arg2', 'argN'] # Any number of args to be passed to the jar file
result = jarWrapper(*args)
print result
Run Code Online (Sandbox Code Playgroud)
我使用以下方式执行tika jar来提取word文档的内容。它有效,我也得到了输出。我试图运行的命令是"java -jar tika-app-1.24.1.jar -t 42250_EN_Upload.docx"
from subprocess import PIPE, Popen
process = Popen(['java', '-jar', 'tika-app-1.24.1.jar', '-t', '42250_EN_Upload.docx'], stdout=PIPE, stderr=PIPE)
result = process.communicate()
print(result[0].decode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
在这里我得到的结果是元组,因此"result[0]"
. 该字符串也是二进制格式(b 字符串)。要将其转换为普通字符串,我们需要使用“utf-8”进行解码。
归档时间: |
|
查看次数: |
74571 次 |
最近记录: |