0

我在我的 Linux 服务器上运行 tika,我想使用 python (subprocess.Popen) 运行它

但是,我有一个非 root 访问权限,所以我只有一个本地 java 安装。每次我需要为每个会话设置 java home 和路径时:

导出 JAVA_HOME=/usr/java/jdk1.5.0_07/bin/java

导出 PATH=$PATH:/usr/java/jdk1.5.0_07/bin

然后我可以从 java 目录运行 tika 并将输出保存到某个文件out_txt.txt

卷曲 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
4

1 回答 1

1

1)你可以:

  • 使用os.setenv('JAVA_HOME', '/usr/java/jdk1.5.0_07')before Popen,这将为所有未来调用设置环境变量。或为PATH

    os.environ['PATH'] += ":/usr/java/jdk1.5.0_07"
    
  • 将环境字典传递给Popenas env

    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)

  • 打开文件进行写入并将其传递给Popenas stdout(和可选stderr):

    output = open(outfile, 'wb')
    subprocess.Popen(args, stdout=output, stderr=output)
    
  • shell=True通过传递给外壳将其留给Popen

    Popen("curl www.vit.org/downloads/doc/tariff.doc | java -jar tika-app-1.3.jar --text >out_txt.txt", shell=True)
    
于 2013-04-12T00:29:03.130 回答