python 预编译命令_Python子进程调用预编译j

博主在尝试从Python中使用`subprocess.call()`调用预编译的Java类Mallet时遇到错误。通过检查`mallet.bat`和`mallet`脚本,发现这些脚本是用于Windows和Linux的批处理文件,它们设置了环境变量并运行Java命令。错误包括`WindowsError: [Error 2]`和`[Error 193]`。解决方案可能是正确设置环境变量和使用适合操作系统的命令。
摘要由CSDN通过智能技术生成

这可以从windows命令行执行:c:\mallet\bin\mallet run

我试过了

^{pr2}$

然后得到一个错误WindowsError: [Error 2] The system cannot find the file specified

我试过了subprocess.call(['c:/mallet/bin/mallet', 'run'])

然后找出错误WindowsError: [Error 193] %1 is not a valid Win32 application

我要传给什么subprocess.call()? 在

为了完整起见,我想传递的完整命令是:bin\mallet run cc.mallet.topics.tui.DMRLoader texts.txt features.txt instance.mallet

我模糊的想法是这是一个预编译的java类,我正在以某种方式调用它,但我并不真正理解我在这里做什么。在

以下是文件夹bin中的两个mallet文件:

mallet.bat@echo off

rem This batch file serves as a wrapper for several

rem MALLET command line tools.

if not "%MALLET_HOME%" == "" goto gotMalletHome

echo MALLET requires an environment variable MALLET_HOME.

goto :eof

:gotMalletHome

set MALLET_CLASSPATH=%MALLET_HOME%\class;%MALLET_HOME%\lib\mallet-deps.jar

set MALLET_MEMORY=1G

set MALLET_ENCODING=UTF-8

set CMD=%1

shift

set CLASS=

if "%CMD%"=="import-dir" set CLASS=cc.mallet.classify.tui.Text2Vectors

if "%CMD%"=="import-file" set CLASS=cc.mallet.classify.tui.Csv2Vectors

if "%CMD%"=="import-smvlight" set CLASS=cc.mallet.classify.tui.SvmLight2Vectors

if "%CMD%"=="train-classifier" set CLASS=cc.mallet.classify.tui.Vectors2Classify

if "%CMD%"=="train-topics" set CLASS=cc.mallet.topics.tui.Vectors2Topics

if "%CMD%"=="infer-topics" set CLASS=cc.mallet.topics.tui.InferTopics

if "%CMD%"=="estimate-topics" set CLASS=cc.mallet.topics.tui.EstimateTopics

if "%CMD%"=="hlda" set CLASS=cc.mallet.topics.tui.HierarchicalLDATUI

if "%CMD%"=="prune" set CLASS=cc.mallet.classify.tui.Vectors2Vectors

if "%CMD%"=="split" set CLASS=cc.mallet.classify.tui.Vectors2Vectors

if "%CMD%"=="bulk-load" set CLASS=cc.mallet.util.BulkLoader

if "%CMD%"=="run" set CLASS=%1 & shift

if not "%CLASS%" == "" goto gotClass

echo Mallet 2.0 commands:

echo import-dir load the contents of a directory into mallet instances (one per file)

echo import-file load a single file into mallet instances (one per line)

echo import-svmlight load a single SVMLight format data file into mallet instances (one per line)

echo train-classifier train a classifier from Mallet data files

echo train-topics train a topic model from Mallet data files

echo infer-topics use a trained topic model to infer topics for new documents

echo estimate-topics estimate the probability of new documents given a trained model

echo hlda train a topic model using Hierarchical LDA

echo prune remove features based on frequency or information gain

echo split divide data into testing, training, and validation portions

echo Include --help with any option for more information

goto :eof

:gotClass

set MALLET_ARGS=

:getArg

if "%1"=="" goto run

set MALLET_ARGS=%MALLET_ARGS% %1

shift

goto getArg

:run

java -Xmx%MALLET_MEMORY% -ea -Dfile.encoding=%MALLET_ENCODING% -classpath %MALLET_CLASSPATH% %CLASS% %MALLET_ARGS%

:eof

和mallet#!/bin/bash

malletdir=`dirname $0`

malletdir=`dirname $malletdir`

cp=$malletdir/class:$malletdir/lib/mallet-deps.jar:$CLASSPATH

#echo $cp

MEMORY=1g

JAVA_COMMAND="java -Xmx$MEMORY -ea -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -classpath $cp"

CMD=$1

shift

help()

{

cat <

Mallet 2.0 commands:

import-dir load the contents of a directory into mallet instances (one per file)

import-file load a single file into mallet instances (one per line)

import-svmlight load SVMLight format data files into Mallet instances

train-classifier train a classifier from Mallet data files

classify-dir classify data from a single file with a saved classifier

classify-file classify the contents of a directory with a saved classifier

classify-svmlight classify data from a single file in SVMLight format

train-topics train a topic model from Mallet data files

infer-topics use a trained topic model to infer topics for new documents

evaluate-topics estimate the probability of new documents under a trained model

hlda train a topic model using Hierarchical LDA

prune remove features based on frequency or information gain

split divide data into testing, training, and validation portions

Include --help with any option for more information

EOF

}

CLASS=

case $CMD in

import-dir) CLASS=cc.mallet.classify.tui.Text2Vectors;;

import-file) CLASS=cc.mallet.classify.tui.Csv2Vectors;;

import-svmlight) CLASS=cc.mallet.classify.tui.SvmLight2Vectors;;

train-classifier) CLASS=cc.mallet.classify.tui.Vectors2Classify;;

classify-dir) CLASS=cc.mallet.classify.tui.Text2Classify;;

classify-file) CLASS=cc.mallet.classify.tui.Csv2Classify;;

classify-svmlight) CLASS=cc.mallet.classify.tui.SvmLight2Classify;;

train-topics) CLASS=cc.mallet.topics.tui.Vectors2Topics;;

infer-topics) CLASS=cc.mallet.topics.tui.InferTopics;;

evaluate-topics) CLASS=cc.mallet.topics.tui.EvaluateTopics;;

hlda) CLASS=cc.mallet.topics.tui.HierarchicalLDATUI;;

prune) CLASS=cc.mallet.classify.tui.Vectors2Vectors;;

split) CLASS=cc.mallet.classify.tui.Vectors2Vectors;;

bulk-load) CLASS=cc.mallet.util.BulkLoader;;

run) CLASS=$1; shift;;

*) echo "Unrecognized command: $CMD"; help; exit 1;;

esac

$JAVA_COMMAND $CLASS $*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值