【问题标题】:my first casper.js script being called from python我的第一个 casper.js 脚本是从 python 调用的
【发布时间】:2014-07-08 04:55:29
【问题描述】:

python脚本

import os
import subprocess
APP_ROOT = os.path.dirname(os.path.realpath(__file__))
CASPER = "C:\casperjs\bin\casperjs"
SCRIPT = os.path.join(APP_ROOT,'test.js')
params = CASPER + ' ' + SCRIPT
print subprocess.check_output(params, shell=True)

casper.js 示例

var casper = require('casper').create();

casper.start('http://casperjs.org/', function() {
    this.echo(this.getTitle());
});

casper.thenOpen('http://phantomjs.org', function() {
    this.echo(this.getTitle());
});

casper.run();

问题 - 我的 python 脚本中的最后一行

我想知道什么...

  • “print subprocess.check_output(params, shell=True)”是做什么的,params 是什么,我假设 shell 意味着打印到 shell,也就是命令行。为什么会出错?

  • 什么是“APP_ROOT = os.path.dirname(os.path.realpath(file))”???你能把它分解成碎片吗?

我是从这里得到的

https://www.youtube.com/watch?v=Acrx-AjCo8Q

【问题讨论】:

  • 您需要从.py 文件中调用它。这在 python shell 中运行时不起作用,因为 file 不会被定义。

标签: javascript python phantomjs casperjs


【解决方案1】:

你可以这样做:

在名为run_casper_sample.py的文件中输入以下代码:

import os
import subprocess
APP_ROOT = os.path.dirname(os.path.realpath(__file__))
CASPER = "C:\casperjs\bin\casperjs"
SCRIPT = os.path.join(APP_ROOT,'test.js')
params = CASPER + ' ' + SCRIPT
output = subprocess.check_output(params, shell=True)

然后在命令行输入以下内容:

python -i run_casper_sample.py

-i 选项在交互式 shell 中运行 Python。

现在通过执行以下操作检查您感兴趣的每一件事:

>>> print(repr(APP_ROOT))

或者只是:

>>> APP_ROOT

您还可以获得一些内置帮助,例如:

>>> help(subprocess.check_output)

注意:>>> 只是匹配 Python 交互式 shell 的标记。

【讨论】:

  • 一直说“NameError: name 'file' is not defined”
  • 请将确切的错误粘贴到 codepad.org 之类的内容中,或发布有关您遇到的问题的新问题。我上面的回答是正确的,它确实有效。
  • 嗨,确切的错误如上“NameError:名称'文件'未定义。这是代码中的第三行,APP_ROOT =blah ....不幸的是,您的回答对我不起作用. 我仍然不断提示名称,未定义“文件”。
  • @yoshiserry 我要求精确复制和粘贴的原因是因为您所描述的可悲的是不准确和错误的。您在上面假装的那段代码以及我在回答中提供的代码不包含对名为 file 的对象的引用。有__file__,但你似乎没有在这里描述。由于脱节,我实际上不确定如何为您提供帮助:/
  • 我复制并粘贴我在我的问题中所说的 python n js 代码。我得到...[joshua@JOSHUA-PC 文档]$ python open.py 文件“open.py”,第 7 行打印 subprocess.check_output(params, shell=True) ^ SyntaxError: invalid syntax [joshua@JOSHUA-PC 文档]$
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多