2014-01-29 4 views
1

Это странно. Запустите код и он прекрасно работает на локальном сервере, но при загрузке его в приложение двигатель не работает на всех, и получает ошибку:Python: ValueError происходит только на AppEngine, но отлично работает локально

if int(totaltime[0:2]) == 23 and int(totaltime[3:5]) >= 45: 
ValueError: invalid literal for int() with base 10: ', ' 

Вот код, который вызвав его:

 if int(totaltime[0:2]) == 23 and int(totaltime[3:5]) >= 45: 
      ta = "yes" 
     else: 
      ta = "no" 

Общее время 23:27:35, так что int (totaltime [0: 2]) получает 23 и (общее время [3: 5]) получает 27. Я не понимаю, почему это не работает в Интернете, но работает нормально локально ,

+0

А как вы строите totaltime? –

+0

Это дата и время. Я скопируйте дату и время в строку, разделите дату на строку и время на строку (timetotal) – user1043816

ответ

2

Исключение говорит о том, что ваши данные вводят запятую, поэтому ваше ожидание totaltime, являющееся 23:27:35, явно нарушено.

Попробуйте представить repr(totaltime[0:2]) и repr(totaltime[3:5]) на Appengine.

Кроме того, вы можете разделить если-оператор на две строки следующим образом:

if (int(totaltime[0:2]) == 23 and 
    int(totaltime[3:5]) >= 45): 

Это позволит вам увидеть, какие из звонков int() запускает ValueError, что делает отладку немного проще.

Также следует знать, что дата строка (оба из time и datetime честь настроек локали, которые могут объяснить несоответствие между системой развития и AppEngine.

+0

if (int (totaltime [0: 2]) == 23 и ValueError: недействительный литерал для int() с базой 10 : ',' datetime из списка, не связанного с местным временем. – user1043816

+0

Что выдают вам заявления repr()? Как я уже сказал, я подозреваю, что строки выглядят по-разному в GAE, чем они делают на вашей машине dev. Знание того, как они выглядят, - это первый шаг в исправлении кода. – klausman

Смежные вопросы