2017-01-13 44 views
-1

所以,這裏是一個函數裏面的代碼塊:的Python:無法理解這樣的語法錯誤

 print('Printing current values ...') 

     for key, modbusObject in jsonDict.items(): 
      print("Object {} contains value {} and timestamp {}".format(key, modbusObject.value, modbusObject.timestamp)) 

     print('Writing data for loop number '+str(i)+' ...') 

     # server.send_message_to_all(jsonDict) 
     #print('ho ho ho') 
     i += 1   

     cmd = raw_input('Change json data (y/n) ? --type \'exit\' to quit-- : ') 

所有這一切都被嵌套在一個try ... except語句。不管我放置i + = 1 - >例如打印('ho ho ho'),都會被拒絕爲'SyntaxError:invalid syntax'。

我一直停留在這2天,並不能找出這裏發生了什麼導致這個錯誤...

編輯:更多的代碼,如要求:

def new_client(client, server): 

print("New client connected and was given id %d" % client['id']) 
server.send_message_to_all('hello foo') 

# global jsonDict 
# global i 

while True: 

    print('Currently connected clients : ') 

    try: 
     for key, modbusObject in jsonDict.items(): 
      for case in switch(key): 
       if case("coil1000"): 
        if(i % 2 == 0): 
         modbusObject.value = 1 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1001"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 1 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1002"): 
        if(i % 2 == 0): 
         modbusObject.value = 1 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1008"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 1 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1009"): 
        if(i % 2 == 0): 
         modbusObject.value = 1 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1010"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 1 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("coil1011"): 
        if(i % 2 == 0): 
         modbusObject.value = 1 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1000"): 
        if(i % 2 == 0): 
         modbusObject.value = 127 
        else: 
         modbusObject.value = 365 
        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1001"): 
        if(i % 2 == 0): 
         modbusObject.value = 8350 
        else: 
         modbusObject.value = 4633 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1002"): 
        if(i % 2 == 0): 
         modbusObject.value = 20 
        else: 
         modbusObject.value = 15 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1003"): 
        if(i % 2 == 0): 
         modbusObject.value = 40 
        else: 
         modbusObject.value = 10 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1025"): 
        if(i % 2 == 0): 
         modbusObject.value = 6 
        else: 
         modbusObject.value = 3 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1034"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 5 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break                                       
       if case("inh1035"): 
        if(i % 2 == 0): 
         modbusObject.value = 162 
        else: 
         modbusObject.value = 50 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1036"): 
        if(i % 2 == 0): 
         modbusObject.value = 40 
        else: 
         modbusObject.value = 20 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("inh1037"): 
        if(i % 2 == 0): 
         modbusObject.value = 50 
        else: 
         modbusObject.value = 25 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break            
       if case("in1000"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 50 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1001"): 
        if(i % 2 == 0): 
         modbusObject.value = 100 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1002"): 
        if(i % 2 == 0): 
         modbusObject.value = 40 
        else: 
         modbusObject.value = 37 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1014"): 
        if(i % 2 == 0): 
         modbusObject.value = 350 
        else: 
         modbusObject.value = 221 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1015"): 
        if(i % 2 == 0): 
         modbusObject.value = 200 
        else: 
         modbusObject.value = 16 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1018"): 
        if(i % 2 == 0): 
         modbusObject.value = 1000 
        else: 
         modbusObject.value = 1246 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break                    
       if case("in1021"): 
        if(i % 2 == 0): 
         modbusObject.value = 2000 
        else: 
         modbusObject.value = 1432 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1086"): 
        if(i % 2 == 0): 
         modbusObject.value = 0 
        else: 
         modbusObject.value = 1 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1094"): 
        if(i % 2 == 0): 
         modbusObject.value = 1 
        else: 
         modbusObject.value = 0 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1102"): 
        if(i % 2 == 0): 
         modbusObject.value = 3000 
        else: 
         modbusObject.value = 50 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
        break 
       if case("in1104"): 
        if(i % 2 == 0): 
         modbusObject.value = 100 
        else: 
         modbusObject.value = 3 

        modbusObject.timestamp = dumps(datetime.datetime.now().strftime("%d-%m-%Y %H:%M:%S"), default=json_serial) 
       if case(''): 
        pass 

     print('Printing current values ...') 

     for key, modbusObject in jsonDict.items(): 
      print("Object {} contains value {} and timestamp {}".format(key, modbusObject.value, modbusObject.timestamp)) 

     print('Writing data for loop number '+str(i)+' ...') 

     # server.send_message_to_all(jsonDict) 
     #print('ho ho ho') 
     i += 1   

     cmd = raw_input('Change json data (y/n) ? --type \'exit\' to quit-- : ') 

     if cmd != '':  
      if cmd.lower() == 'exit': 
       exit() 
      elif cmd.lower() == 'y': 
       i += 1 
      else: 
       pass 

    except Exception as e: 
     traceback.print_exc() 
    finally: 
     time.sleep(8) 

注:

print("New client connected and was given id %d" % client['id']) 
server.send_message_to_all('hello foo') 

while True: 

塊正確縮進,這只是複製/粘貼的結果,他們似乎沒有。

開關...殼體替代我用的是從here

+1

也許混合製表符和空格導致不可見的縮進錯誤? – RemcoGerlich

+0

你能發佈實際錯誤嗎?圍繞該錯誤消息應該有更多,例如,行號等。 – hansaplast

+0

不幸的是,一切都很完美。 –

回答

0

問題是轉換縮進成空格後固定。感謝大家的幫助。