java - 使用 Popen 运行 Java 应用程序

标签 java python linux apache-tika

我在我的 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 来:

  1. 使用 Popen 设置 java 主目录和路径
  2. 将 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/

相关文章:

java - 从 Android 发送 JSON HTTP POST 请求

python - 为什么我可以接收数据但无法正确渲染数据(带有flask-restapi/jinja2的angularjs)

node.js - 错误消息 npm-default 不可用

linux - 如何从 unix 中的 .dat 文件中读取每一行?

java - 使用 Mockito 对 SharedPreferences 包装器进行单元测试

java - 将 Json 转换为特定的类

python - 在 Python 中访问静态属性

linux - 为 mysql 输入转义 echo 中的引号

java - 可滚动的选项卡内容

python - 使用 Django 模板的导航菜单