2

使用子进程不起作用。在命令提示符下,我会像这样运行 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

4

1 回答 1

4

答案实际上是两个部分。由于 Python 对 JavaScript 一无所知,因此执行此操作的唯一方法是使用 subprocess 将指向 phantomjs 的参数前置,然后是您的脚本。在您的脚本中,您需要指向 Casper.batch 文件。这记录在他们的操作方法中。使用 subprocess 您可以从命令行捕获输出。

    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
于 2013-07-20T14:58:43.373 回答