2014-05-20 29 views
1

pythonscript稱爲我的第一casper.js腳本被蟒蛇

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(文件))」???你能把它分解成幾個小塊。

我得到這個從

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

您需要從'.py'文件調用它。這在python shell中運行時不起作用,因爲__file__不會被定義。 –

回答

0

這裏是你可以做:

輸入下面的代碼到一個文件名爲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) 

NB: the >>> a只需標記以匹配Python交互式shell。

+0

一直說「NameError:name'__file__'未定義」 – yoshiserry

+0

我仍然收到此錯誤。 – yoshiserry

+0

請將確切的錯誤粘貼到http://codepad.org/之類的內容中,或者發佈您遇到問題的新問題。我上面的回答是正確的,它確實有效。 –