Уведомления

Группа в Telegram: @pythonsu

#1 Март 25, 2009 06:54:57

Slon
От:
Зарегистрирован: 2009-03-04
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Подскажите как правильно обработать следующую ошибку:

Traceback (most recent call last):
File "C:\AddPrint.py", line 35, in <module>
AddNetworkPrinters(PathToServers, Printers)
File "C:\AddPrint.py", line 23, in AddNetworkPrinters
if win32print.OpenPrinter(r'\\'+x+'\\'+y):
pywintypes.error: (1801, 'OpenPrinter', 'Имя принтера задано неверно.')
Мне нужно чтобы действия зависели от того что выводиться в этой части('Имя принтера задано неверно.')

Не могу понять какой параметр задать в except.



Офлайн

#2 Март 25, 2009 07:48:56

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

как-то так:

try:
if win32print.OpenPrinter(r'\\'+x+'\\'+y):
...
except win32print.PrintError, error:
if error[0] == 1801:
...
elif error[0] == 1802:
...



Офлайн

#3 Март 25, 2009 08:04:31

Slon
От:
Зарегистрирован: 2009-03-04
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Не проходит. Говорит что у модуля win32print нет объекта PrintError

Проблема вот в этой строке:

except win32print.PrintError, error:
Не могу понять что сюда нужно вставить чтобы отрабатывало корректно.



Офлайн

#4 Март 25, 2009 08:08:13

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Slon
Не проходит. Говорит что у модуля win32print нет объекта PrintError

Проблема вот в этой строке:

except win32print.PrintError, error:
Не могу понять что сюда нужно вставить чтобы отрабатывало корректно.
win32print.PrintError я придумал))))
замени на исключение, которое надо отловить.
pywintypes.error



Отредактировано (Март 25, 2009 08:09:48)

Офлайн

#5 Март 25, 2009 08:27:15

Slon
От:
Зарегистрирован: 2009-03-04
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Да я понял =)

Импортировал модуль pywintypes, подставил:

except pywintypes.error as err:
if err[0] == 1801:
print ('test1')
elif err[0] == 1802:
print ('test2')
Получил:
Traceback (most recent call last):
File "C:\AddPrint.py", line 40, in <module>
AddNetworkPrinters(PathToServers, Printers)
File "C:\AddPrint.py", line 27, in AddNetworkPrinters
if err[0] == 1801:
TypeError: 'error' object does not support indexing
ps: i use python 3.0.1



Отредактировано (Март 25, 2009 08:34:59)

Офлайн

#6 Март 25, 2009 10:27:29

Dimka665
От:
Зарегистрирован: 2008-09-19
Сообщения: 177
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

err.args



Офлайн

#7 Март 25, 2009 14:28:42

Slon
От:
Зарегистрирован: 2009-03-04
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Появился еще один вопрос, как сравнить два списка?
допустим:

list1 = ['str1', 'str2']
list2 = ['str1', 'str2', 'str3']

for x in list1:
for y in list2:
if x==y:
.........
Элементы сравниваются. Но как сделать так чтобы после сравнения, если истина (х==у) эти элементы удалялись бы из первоначальных списков и в дальнейшем при сравнении не использовались?



Офлайн

#8 Март 25, 2009 15:21:48

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Для начала, неплохо было б сравнить длины списков

if len(filter(lambda i: i==0, map(lambda x,y:1 if x==y else 0, list1,list2)))==0:
print True
else:
print False
:-)



Отредактировано (Март 25, 2009 15:26:08)

Офлайн

#9 Март 26, 2009 04:29:55

Slon
От:
Зарегистрирован: 2009-03-04
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Помогите пожалуйста понять значение функций map() и filter():

Что делает функция map(), если к примеру на вход получает:

map(1, list1,list2)
Если написать:
print (map(1, list1,list2))
Выводит:
<map object at 0x00F14D10>
^^^^^ Как оно получилось и что это вообще такое?(если это область в памяти то как можно получить содержимое)?

пс: сильно прошу не бить, я пока ламер



Офлайн

#10 Март 26, 2009 05:12:05

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка исключений

Help on built-in function map in module __builtin__:

map(…)
map(function, sequence) -> list

Return a list of the results of applying the function to the items of
the argument sequence(s). If more than one sequence is given, the
function is called with an argument list consisting of the corresponding
item of each sequence, substituting None for missing values when not all
sequences have the same length. If the function is None, return a list of
the items of the sequence (or a list of tuples if more than one sequence).

Help on built-in function filter in module __builtin__:

filter(…)
filter(function or None, sequence) -> list, tuple, or string

Return those items of sequence for which function(item) is true. If
function is None, return the items that are true. If sequence is a tuple
or string, return the same type, else return a list.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version