我在我的 Linux 服务器上运行 tika,我想使用 python (subprocess.Popen) 运行它
但是,我没有 root 访问权限,所以我只有本地 java 安装。每次我需要为每个 session 设置 java 主目录和路径时:
export JAVA_HOME=/usr/java/jdk1.5.0_07/bin/java
export PATH=$PATH:/usr/java/jdk1.5.0_07/bin
然后我可以从 java 目录运行 tika 并将输出保存到某个文件 out_txt.txt
curl www.vit.org/downloads/doc/tariff.doc | java -jar tika-app-1.3.jar --text >out_txt.txt
所以,我需要知道如何使用 Popen 来:
- 使用 Popen 设置 java 主目录和路径
- 将 Tika 输出写入文件
out_txt.txt
最佳答案
1) 你可以:
在
Popen
之前使用os.setenv('JAVA_HOME', '/usr/java/jdk1.5.0_07')
,这将设置环境变量对于所有 future 的调用。或者对于PATH
:os.environ['PATH'] += ":/usr/java/jdk1.5.0_07"
将环境指令作为
env
传递给Popen
:environ = os.environ.copy() environ['JAVA_HOME'] = '/usr/java/jdk1.5.0_07' environ['PATH'] += ':/usr/java/jdk1.5.0_07/bin' subprocess.Popen(args, env=environ)
2)
打开文件进行写入并将其作为
stdout
(以及可选的stderr
)传递给Popen
:output = open(outfile, 'wb') subprocess.Popen(args, stdout=output, stderr=output)
通过将
shell=True
传递给Popen
将其留给 shell:Popen("curl www.vit.org/downloads/doc/tariff.doc | java -jar tika-app-1.3.jar --text >out_txt.txt", shell=True)
关于java - 使用 Popen 运行 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960983/