Найти - Пользователи
Полная версия: Обработка исключений
Начало » Python для новичков » Обработка исключений
1 2
Slon
Подскажите как правильно обработать следующую ошибку:
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.
Dimka665
как-то так:
try:
if win32print.OpenPrinter(r'\\'+x+'\\'+y):
...
except win32print.PrintError, error:
if error[0] == 1801:
...
elif error[0] == 1802:
...
Slon
Не проходит. Говорит что у модуля win32print нет объекта PrintError

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

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

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

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

Импортировал модуль 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
Dimka665
err.args
Slon
Появился еще один вопрос, как сравнить два списка?
допустим:

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

for x in list1:
for y in list2:
if x==y:
.........
Элементы сравниваются. Но как сделать так чтобы после сравнения, если истина (х==у) эти элементы удалялись бы из первоначальных списков и в дальнейшем при сравнении не использовались?
hellslade
Для начала, неплохо было б сравнить длины списков
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
:-)
Slon
Помогите пожалуйста понять значение функций map() и filter():

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

пс: сильно прошу не бить, я пока ламер
hellslade
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.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB