我正在尝试构建一个非常简单的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没有正确解析......有什么想法吗?
感谢您的帮助
答案 0 :(得分: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")
在我的情况下,我希望所有命令都运行错误,这就是为什么我没有在错误时引发异常。此外,我希望任何消息直接打印到终端,所以我有stdout和stderr是None导致他们不去我的python程序。如果您的需求因错误和消息略有不同,请查看http://docs.python.org/library/subprocess.html文档,了解如何调整所发生的情况。
(我请求bash为我运行我的命令,以便我得到通常的路径,引用等)
答案 1 :(得分:0)
当命令正确执行时,os.system应该返回0。 0是成功的标准返回代码。
从命令行运行时是否打印输出?
答案 2 :(得分:-1)
为什么要在Python中执行此操作?对于像这样的任务,尤其是Java,最好使用Apache Ant。在xml中编写命令,然后为您运行ant。