使用Subprocess不起作用。在命令提示符下,我将像这样运行Casperjs文件。
casperjs.bat test.js
子进程如果失败,因为脚本不是exe。不幸的是,我在Windows环境中工作。
cmd = ['/projects/casperjs/batchbin/casperjs.bat', '/projects/music/test.js']
response = subprocess.check_output(cmd,
shell=False,
stderr=subprocess.STDOUT)
*错误返回非零退出状态1
答案 0 :(得分:4)
这个问题的答案实际上是两部分。由于Python对JavaScript一无所知,唯一的方法就是使用子进程预先挂起指向phantomjs然后是脚本的参数。在脚本中,您需要指向Casper.batch文件。这在他们的操作方法中有记录。使用子进程,您可以从命令行捕获输出。
APP_ROOT = os.path.dirname(os.path.realpath(__file__))
PHANTOM = '/projects/phantomjs/phantomjs.exe'
SCRIPT = os.path.join(APP_ROOT, 'iTunesScriptSingle.js')
params = [PHANTOM, SCRIPT, song, artist]
child = subprocess.Popen(params, shell=True, stderr=subprocess.PIPE)
while True:
out = child.stderr.read(1)
return out
if out == '' and child.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
return out