从Python执行.jar

我正在尝试构建一个非常简单的python脚本来自动缩小/组合一些css / js资产。 我不确定如何正确处理缩小步骤。我使用yui-compressor,通常直接从命令行调用jar。 假设构建脚本与rhino
js.jar
yui-compressor.jar
在同一目录中,我将能够像这样压缩css / js文件:
java -cp js.jar -jar yuicompressor-2.4.4.jar -o css/foo.min.css css/foo.css
从终端调用它工作正常,但在python构建文件中,它没有 例如,
os.system("...")
返回的退出状态是
0
,并且没有从命令返回任何输出(例如,当使用
os.popen()
而不是
os.system()
时) 我猜它与路径有关,也许在调用
os.system()
时,java没有正确解析......任何想法? 谢谢你的帮助     
已邀请:
我有一个类似的情况,当我想要一个python程序来构建一些命令然后运行它们时,输出将发送给触发脚本的用户。我使用的代码是:
import subprocess
def run(cmd):
   call = ["/bin/bash", "-c", cmd]
   ret = subprocess.call(call, stdout=None, stderr=None)
   if ret > 0:
      print "Warning - result was %d" % ret

run("javac foo.java")
run("javac bar.java")
在我的情况下,我希望所有命令都运行错误,这就是为什么我没有在错误时引发异常。此外,我希望任何消息直接打印到终端,所以我有stdout和stderr是None导致他们不去我的python程序。如果您的需求与错误和消息略有不同,请查看http://docs.python.org/library/subprocess.html文档,了解如何调整发生的情况。 (我要求bash为我运行我的命令,以便我得到我平时的路径,引用等)     
当命令正确执行时,os.system应该返回0。 0是成功的标准返回码。 从命令行运行时是否打印输出?     
为什么要在Python中执行此操作?对于像这样的任务,尤其是Java,最好使用Apache Ant。在xml中编写命令,然后为您运行ant。     

要回复问题请先登录注册