2016-04-15 72 views
1
import MySQLdb as mdb 
import math 
import sys 
from decimal import Decimal 

conn=mdb.connect('localhost','root','','testdb') 
c=conn.cursor() 

user_id=str(sys.argv[1]) 
lati=str(sys.argv[2]) 
longi=str(sys.argv[3]) 
radius=int(str(sys.argv[4])) 

#user_id=1 
#lati='28.635308' 
#longi='77.224960' 
#radius=1.5 

錯誤是:錯誤在Python腳本關於STR(sys.argv中[1])

Traceback (most recent call last): 
    File "C:\Python27\recommend.py", line 9, in <module> 
    user_id=str(sys.argv[1]) 
IndexError: list index out of range 

但是其通過#註釋的虛設值工作的罰款。任何幫助解決這個錯誤?

+0

你如何運行這個腳本? – Francesco

+0

我使用我的PHP頁面中的shell_exec()命令調用它。 eroor在Python空閒Shell中指示。 –

+2

我的意思是,你在通話中傳遞4個參數嗎?你正在調用的確切命令是什麼? – Francesco

回答

2

檢查錯誤的一種方法是,您可以打印出sys.argv列表並檢查其中包含的元素數量。錯誤的輸出是說在sys.argv中只有一個元素(很可能是腳本本身的-script名稱)。很可能當你運行腳本時,你不提供參數(你必須提供4個參數)。

+0

'<?php error_reporting(E_ALL); ini_set('display_errors','1'); $ lat = $ _POST ['lt']; $ lon = $ _POST ['ln']; $ uid = $ _POST ['id']; $ rad = $ _POST ['rd']; #$ lat =「28.674558」; #$ lon =「77.274202」; #$ uid =「1」; #$ rad =「1」; $ outs ='python C:\ Python27 \ recommend.py'。 $ uid。 ''。 $ lat。 ''。 $ lon。 ''。 $弧度; $ output = shell_exec($ outs); echo $ output; ?>'我用四個參數調用了腳本這裏有什麼錯誤嗎? –

+0

我對你的Python和PHP文件進行了一些實驗,我不確定,但行'radius = int(str(sys.argv [4]))'不兼容(因爲字符串不能級聯到int函數必須是float)。你可以試試這個'radius = float(str(sys.argv [4]))''。我希望它能解決你的問題。 – molcay