2016-04-15 21 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 

エラーがある:エラー(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アイドルシェルで表示されます。 –

+2

私は、呼び出しで4つのパラメータを渡しているのですか?あなたが呼んでいる正確なコマンドは何ですか? – Francesco

答えて

2

間違いを確認する1つの方法は、sys.argvリストを印刷し、それが持つ要素の数を確認することができます。エラーの出力は、sys.argvには要素が1つしかない(スクリプトの名前 - スクリプト名 - )ことを示しています。スクリプトを実行しているときには、引数を指定しないでください(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; ?> '私は4つの引数でスクリプトを呼び出しましたこれに何らかのエラーはありますか? –

+0

私はあなたのPythonとPHPファイルでいくつかの実験をしましたが、 'radius = int(str(sys.argv [4]))'という行は互換性がありません(文字列はintにカスケードすることができないので関数はfloatでなければなりません)。この 'radius = float(str(sys.argv [4]))'を試すことができます。私はそれがあなたの問題を解決したいと思います。 – molcay

関連する問題