Anonymous
Выложите минимальный рабочий код, где воспроизводится ошибка
# файл exp.py
class CustomExp(Exception):
pass
class NotValid(CustomExp):
def __init__(self, message):
self.message = message
# файл ent.py
class Ent:
def __init__(self, data):
if data is not None:
self.data = data
else:
self.data = None
def sol_1(self):
try:
if data['first'] == 1:
raise ValueError
elif data['second'] == 2:
raise IndexError
elif data['third'] == 3:
raise NotValid('No solution.')
else:
return data
except ValueError:
print('First not valid.')
except IndexError:
print('Second not valid.')
except NotValid as e:
print(e)
# файл solution.py
solver = Ent()
data = {'third': 3, 'second': 'No', 'first': 'alpha'}
try:
solution = solver.sol_1(data)
except NotValid as e:
print(e)
solution = solver.sol_1(data.update({'third': 3 + 5}))
else:
print('Ok')
Anonymous
Хотелось бы в файле solution.py обрабатывать иначе кастомную ошибку NotValid, а на другие ошибки оставить обработку в классе Ent
Anonymous
Или так в принципе не получится?
Victor
Посмотрите, что вернёт data.update(...)
Victor
Ну и с чего data['third'] должно быть равно 3?
Anonymous
Это сугубо левый пример, просто чтобы показать что именно не получается. Основной вопрос именно в обработке ошибок, которые возникают в методе sol_1(): там есть index/value/http/custom ошибки. Хотелось бы обрабатывать только кастомные ошибки, описанные в exp.py, а все другие просто выводить в лог.
Подсказали, что ошибки не нужно было обрабатывать в ent.py, т.е. убрать блок try-except-else. Но тогда, получается, каким образом можно будет отловить другую ошибку, возникшую в методе sol_1? Либо необходимо описать вооообще все ошибки, которые могут возникнуть, и по-разному их обрабатывать в solution.py
Victor
Это сугубо левый пример, просто чтобы показать что именно не получается. Основной вопрос именно в обработке ошибок, которые возникают в методе sol_1(): там есть index/value/http/custom ошибки. Хотелось бы обрабатывать только кастомные ошибки, описанные в exp.py, а все другие просто выводить в лог.
Подсказали, что ошибки не нужно было обрабатывать в ent.py, т.е. убрать блок try-except-else. Но тогда, получается, каким образом можно будет отловить другую ошибку, возникшую в методе sol_1? Либо необходимо описать вооообще все ошибки, которые могут возникнуть, и по-разному их обрабатывать в solution.py
Я попросил не сугубо левый пример, а пример, на котором Ваш случай воспроизводится. Проверьте то, что я выше писал.
Anonymous
Я попросил не сугубо левый пример, а пример, на котором Ваш случай воспроизводится. Проверьте то, что я выше писал.
# файл exp.py
class CustomExp(Exception):
pass
class NotValid(CustomExp):
def init(self, message):
self.message = message
# файл ent.py
class Ent:
def init(self):
pass
def sol_1(self, url = None):
if url is not None:
req_url = url
else:
req_url = 'https://api.github.com'
try:
resp = requests.get(req_url)
print(resp.headers)
resp.raise_for_status()
if 'X-GitHub-Request-Id' in resp.headers:
return True
else:
raise NotValid('NotValid Error occured.')
except requests.HTTPError as err:
print(err)
return False
except NotValid as err:
print(err)
return 'Error 100001'
except Exception as err:
print(err)
return False
# файл solution.py
solver = Ent()
try:
solution = solver.sol_1('https://google.com')
print(solution)
except NotValid as e:
solution = solver.sol_1('https://api.github.com')
print(solution)
Anonymous
Рабочий пример без data.
Суть: как можно отловить ошибку NotValid в solution.py, не отлавливая другие ошибки. Другими словами, оставить обработку всех ошибок, кроме NotValid, в файле ent.py
Victor
Anonymous
😨
Anonymous
Всё, теперь вижу...
Да, этого не следовало делать, если хочу обрабатывать в другом месте. В таком случае, необходимо в самом конце убрать и except Exception, ибо туда это исключение всё равно перейдет. Получается, чтобы этого не произошло, необходимо обработать все мыслимые ошибки, которые могут произойти в блоке try метода sol_1, за исключением собственных исключений?
Victor
Anonymous
Конечно
Я, к сожалению, до сих пор не встречал мест в разных исходниках, где обрабатывается много исключений, условно, обработка на 100+ строк. Какие-то плохие сорцы находил, или применяются какие-то другие подходы?
Victor
Victor
Обычные подходы, просто не нужно писать простыни кода, разделяйте логически
Anonymous
Anonymous
Null
📢 Грядет новый DevOps Battle!
Приглашаем поучаствовать в интеллектуальной игре DevOps Battle. Ждем всех, кого не пугают слова Ansible, Python, CI/CD, Linux, Bash, Jenkins, Git, Kafka, Docker, ICMP, LDAP, Networking, Regex, Scripting, Tcpdump.
Всех участников мы разделим на команды по шесть человек и предложим выполнить задания разной степени сложности. За каждый верный ответ будем начислять баллы, а в финале выберем победителей. Если у вас уже есть собственная команда – отлично, можно подать одну общую заявку!
Баттл пройдет 5 октября в офисе EPAM на Петроградке.
Подробности и регистрация 👇🏻
https://events.epam.com/events/devops-battle-2
Artöm
А если меня пугает regex?
Nickolai
python -m ensurepip --upgrade
Nickolai
тебе
Nickolai
ввести в терминале/командной строке
Nickolai
гугли установка pip linux/windows
Vladimir
Русский Линукс детектед
Dmitry
видимо тебе пайтон надо установить сначала
Dmitry
тогда не должен говорить, что "не является ..."
Dmitry
как ты смотришь какая у тебя версия?
rostislav
может в какойто venv установил) у меня ругается если пайтон не активировал venv
Ilya
А python -m pip install whateveryouneed не пробовал?
Виталий
А ты в той "папке" находишься, когда команду вводишь? Или это совсем глупый и не в тему вопрос?
Kirill
А если в консоле/терминале ввести python, то что будет?
Viktor
Yaroslav
Виндузятник детектед
ZRoman
контл шифт -
Максим
Makar
hi
Makar
Хочу задать 1 вопрос по циклу while
может кто помочь?
Максим
Artemii
“””
“””
rostislav
Makar
ты задай и все
Мне уже 1 молодой человек помог
Но теперь буду знать
Vasiliy
ребят, никто не сталкивался с проблемой, куки пропадали на проде? локально нормально работает, gunicorn нормально, а когда оно ставится за nginx proxy - куки все пропадают
🏴☠️ Alexey
Vasiliy
похоже всё же не в nginx дело, а в приложении что ли... но как-то очень странно. для localhost всё работает, а для реального домена - нет =\
🏴☠️ Alexey
Vasiliy
джанга
🏴☠️ Alexey
CSRF_COOKIE_DOMAIN прописан?
Vasiliy
да
Vasiliy
да смотрю что происходит. тупо для локалхост приходят заголовки, а для реального -нет
🏴☠️ Alexey
вайлдкарт или обычный?
Vasiliy
обычный
🏴☠️ Alexey
заголовки чем смотришь? Paw/httpie?
Vasiliy
с отключенным csrf сработало
Vasiliy
смотрю просто в инспекторе браузера на вкладках
🏴☠️ Alexey
вообще покопайся в настройках - скорее всего там что-то зарыто
Vasiliy
да уже полдня копаюсь)
Vasiliy
капец какой-то, никогда такого не было и тут опять
Tim
Порекомендуйте асинхронную библиотеку для работы с файлами
Anonymous
асинхронно работать с файлами низзя
Anonymous
можно распараллелить — aiofiles
Georgy
Народ, кто может поделиться толковым материалом/опытом, как поженить REST API с MYSQL. Больше интересует настройка частоты обновления, апдейт и тд.
Кто имел опыт с этим?
Aquinary
Кто в pycharm сидит
Почему когда тыкаю на метод без докстринга, то показывает предупреждение (так и надо) и при этом предлагает это исправить, а когда я делаю то же самое с классом, то просто показывает предупреждение?
Mikhail
Prax
Банить точно не будем, да?
Иван
Все побежали закупаться
Иван
Поддерживать отечественного производителя
L U C C Y A N
Иван
У Лукашенко должен быть свой стафф из картофеля
Иван
Агроизыскание такое
Anonymous
L U C C Y A N
Моче-каловый екстрат
Anonymous
че налетели
Trista
Хай бойз
Anonymous
ку
🇷🇺 Artur
кто работал с whatsapp через питон?
🇷🇺 Artur
как можно экспортировать сообщения?
Aquinary
Не подскажите, как можно пройтись по списку словарей ([{},{},{}]) и убрать дубликаты словарей внутри?
Но только так, чтобы дубликат определялся только одним определённым ключём, который я укажу
Aquinary
[
{
'a': 1,
'b': 2,
'c': 3,
}
{
'a': 1,
'b': 4,
'c': 5,
}
]
Например.
Не смотря на то, что b и c в словарях отличаются, но a одинаковое. Вот такое бы убрать как-нибудь) А как - что-то как-то не допру никак