Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 19, 2011 13:28:54

teil
От:
Зарегистрирован: 2011-01-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

Добрый день
Пишу программу на питоне для телефона Nokia E50
Смысл в том что она делает снимок камерой и заливает его на фтп раз в какой то интервал.
Все работает но не долго, бывает через 4 снимка а бывает через 50 выскакивает ошибка что либо не может снять снимок или не может подключиться к фтп. Как побороть не могу разобраться.
Хотел сделать чтоб один скрипт вызывал другой и таким образом обеспечить перезапуск при сбое, но наткнулся что в той версии что стоит в симбиане в модуле os не работает команда spawnl
может кто подскажет как сделать так чтоб программа продолжала работать после ошибки в библиотеке?



Отредактировано (Янв. 19, 2011 13:29:46)

Офлайн

#2 Янв. 19, 2011 13:54:04

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Игнорирование ошибок

Оборачивать в try и except, очевидно же.
Запускать скрипт можно из e32.start_server, писал об этом здесь http://habrahabr.ru/blogs/PyS60/77452/



Офлайн

#3 Янв. 19, 2011 14:12:17

ReaL_HarDCorE
От:
Зарегистрирован: 2011-01-19
Сообщения: 84
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

А тут нужно использовать исключения, тобиш:

def function():
try:
instruction
except:
pass
Поясню: в ветви try у нас выполняется ваша функция. если при выполнении этой ветви появляется ошибка, то дальше работает ветвь except:(исключение), а pass в этой ветви как раз и означает пропустить ошибку



Офлайн

#4 Янв. 19, 2011 16:10:35

teil
От:
Зарегистрирован: 2011-01-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

спасибо теперь допонял смысл
а то я думал наоборот

команда
try:
что делать если выполнилась
except:
что делать если не выполнилась

сегодня проверю



Офлайн

#5 Янв. 19, 2011 16:18:01

R.Ll.S.h57
От:
Зарегистрирован: 2010-02-25
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

Не совсем.
Вот так:

try:
Что надо делать.
except:
Что надо, если не выполнилось.
else:
# Ветка else не обязательно
Что надо, если выполнилось.



Отредактировано (Янв. 19, 2011 16:20:34)

Офлайн

#6 Янв. 19, 2011 16:52:52

teil
От:
Зарегистрирован: 2011-01-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

R.Ll.S.h57
Не совсем.
Вот так:
try:
Что надо делать.
except:
Что надо, если не выполнилось.
else:
# Ветка else не обязательно
Что надо, если выполнилось.
Да я понял
это я написал то как я думал раньше что должно работать



Офлайн

#7 Янв. 19, 2011 16:59:53

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Игнорирование ошибок

teil
а то я думал наоборот
вот поэтому сначала нужно читать учебники, а только потом копипастить код…



Офлайн

#8 Янв. 19, 2011 17:03:51

ReaL_HarDCorE
От:
Зарегистрирован: 2011-01-19
Сообщения: 84
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

igor.kaist
teil
а то я думал наоборот
вот поэтому сначала нужно читать учебники, а только потом копипастить код…
вот вот. я перерыл infopython, start with python и ещё один какой то безымянный учебник



Офлайн

#9 Янв. 21, 2011 12:00:39

teil
От:
Зарегистрирован: 2011-01-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Игнорирование ошибок

Прошу сильно не ругать может за глупые вопросы
но блин все вроде сделал как надо а ошибки продолжают выскакивать и останавливать работу программы:(

Вот листинг кода:
import time
import sys
try:
sys.modules = __import__('btsocket')
except ImportError:
pass
import socket
import camera
from ftplib import FTP
import sysinfo
import httplib
tstart=0
while 1<2:
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), sysinfo.free_ram()
curh = int(time.strftime(“%H”, time.localtime()))
if (curh > 6) & (curh < 22):
t=int(time.time())
if t-tstart>300:
tstart=t
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), “ cam”
try:
i=camera.take_photo()
i.save(u'C:\\1234.jpg')
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), “ connect”
apid = 1
apo=socket.access_point(apid)
socket.set_default_access_point(apo)
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), “ ftp connect”
ftp=FTP ('46.162.2.12','login','pass',15)
f=open(“C:\\1234.jpg”)
ftp.storbinary(“STOR cam1.jpg\n”,f)
f.close()
ftp.close()
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), “ file close”
conn.close()
except:
pass
else:
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime()), “ wait”
i=camera.take_photo()
i.save(u'C:\\1234.jpg')
print time.strftime(“%d-%m-%Y %H:%M:%S”, time.localtime())
time.sleep(3)



Офлайн

#10 Янв. 21, 2011 14:20:09

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Игнорирование ошибок

У вас эта строка

i=camera.take_photo()
в else секции выбросила исключение. Его тоже необходимо ловить.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version