来自Python的Execute.jar

2024-05-15 00:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图构建一个非常简单的python脚本来自动缩小/合并一些css/js资产。

我不知道如何正确处理缩小步骤。我使用yui压缩器,通常直接从命令行调用jar。

假设构建脚本与rhinojs.jaryui-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()时)

我猜这与路径有关,也许是java在调用os.system()时无法正确解析…有什么想法吗?

谢谢你的帮助


Tags: 文件命令行脚本fooosjs步骤java
3条回答

我有一个类似的例子,当我希望一个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")

在我的例子中,我希望所有命令都运行error或not,这就是为什么我没有在error上引发异常的原因。另外,我希望任何消息都直接打印到终端,因此stdout和stderr都不是,这会导致它们不进入我的python程序。如果您对错误和消息的需求略有不同,请查看http://docs.python.org/library/subprocess.html文档,了解如何调整发生的情况。

(我请巴什替我执行我的命令,这样我就可以得到我通常走的路,引用的话等)

为什么要在Python中执行此操作?对于这样的任务,特别是Java,最好使用Apache Ant。用xml编写命令,然后运行ant。

当命令正确执行时,os.system应返回0。0是成功的标准返回代码。

从命令行运行时是否打印输出?

相关问题 更多 >

    热门问题