2016-05-18 16 views
1

私はシンプルな車の追跡プロセスの場所を見つけるためにグーグルマップの会話に簡単なIPアドレスでオンラインで見つかったプロジェクトに取り組んでいます。合計で4つのファイルがありますが、私はmain.pyスクリプトに固執しています。私はそれを数日間働かせようとしています。私は進展を与えたが、私は今のエラーを取得しています:%: 'NoneType'と 'int'のオペランドタイプがサポートされていません

TypeError例外:サポートされていないオペランドのタイプ(複数可)%のため:ここにNoneType 'と' int型

はスクリプトです:

#!/usr/bin/python 
import sys,time,geolocation,publisher 
from subprocess import call 

SleepTime = 10 # seconds 
_lat = 0.00 
_lon = 0.00 

def maintain(): 
    global _lat 
    global _lon 
(lat,lon,accuracy) = geolocation.getLocation() 
if(lat != _lat or lon !=_lon): 
    data = str(lat) + "," + str(lon) + "," + str(accuracy) 
    print ("publishing") , data 
    publisher.publishtoInternet(data) 
    _lat = lat 
    _lon = lon 
else: 
    print ("no change in coordinates") 

print ("program begins") 
while True: 
try: 
    maintain() 
except Exception as inst: 
    print (type)(inst), ('exception captured') 
    print (inst) 
    sys.stdout.flush() 
    #file = open('/tmp/loctracker.error.log','a') 
    #file.write('exception occured, trying to reboot') 
    #file.close() 
    #call(["sudo","reboot"]) 
#break 
for i in range(0,SleepTime): 
    sys.stdout.write ("\restarting in %d seconds ") % (SleepTime-i) 
    sys.stdout.flush() 
    time.sleep(1) 

どんな助けでも大歓迎です!

sys.stdout.write ("\restarting in %d seconds ") % (SleepTime-i) 

Pythonはあなたがある((Noneです)sys.stdout.writeの結果とSleepTime - iに数学を行うためのmod演算子を使用していると考えラインで

よろしく

+0

があなたのインデンデーション修正していただけますか? – miradulo

+0

完全なトレースバックを表示できますか? –

+0

私はTypeErrorについての質問は、誤ったグループ化が両方を引き起こしたとしても、AttributeErrorに関する質問と重複しているという意見に同意します。 – Noumenon

答えて

1

をint)。これは早い括弧があるためです。

側の注意点として
sys.stdout.write ("restarting in %d seconds " % (SleepTime-i)) 

、書式設定のための%は、String.Formatのを支持してPythonでfrowned uponです:あなたが望んでいたことは、全体の結果を印刷することでした。この行で

1

sys.stdout.write ("\restarting in %d seconds ") % (SleepTime-i) 

間違ったグループを使用しています。

(sys.stdout.write ("\restarting in %d seconds ")) % (SleepTime-i) 

sys.stdout.write()戻りNone、そしてあなたがNone % integerをやっている:ここではより多くの括弧で示さ、それはやっているものです。あなたは、コール内SleepTime-iを配置する必要があり、それはむしろ、関数呼び出しよりも文字列に適用されます。

sys.stdout.write("\restarting in %d seconds " % (SleepTime-i)) 
関連する問題