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
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
Anonymous
😨
Anonymous
Всё, теперь вижу... Да, этого не следовало делать, если хочу обрабатывать в другом месте. В таком случае, необходимо в самом конце убрать и except Exception, ибо туда это исключение всё равно перейдет. Получается, чтобы этого не произошло, необходимо обработать все мыслимые ошибки, которые могут произойти в блоке try метода sol_1, за исключением собственных исключений?
Anonymous
Конечно
Я, к сожалению, до сих пор не встречал мест в разных исходниках, где обрабатывается много исключений, условно, обработка на 100+ строк. Какие-то плохие сорцы находил, или применяются какие-то другие подходы?
Victor
Обычные подходы, просто не нужно писать простыни кода, разделяйте логически
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?
ShadoWalkeR
А если меня пугает 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
“”” “””
Makar
ты задай и все
Мне уже 1 молодой человек помог Но теперь буду знать
Vasiliy
ребят, никто не сталкивался с проблемой, куки пропадали на проде? локально нормально работает, gunicorn нормально, а когда оно ставится за nginx proxy - куки все пропадают
Vasiliy
похоже всё же не в nginx дело, а в приложении что ли... но как-то очень странно. для localhost всё работает, а для реального домена - нет =\
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 сидит Почему когда тыкаю на метод без докстринга, то показывает предупреждение (так и надо) и при этом предлагает это исправить, а когда я делаю то же самое с классом, то просто показывает предупреждение?
Prax
Банить точно не будем, да?
Иван
Все побежали закупаться
Иван
Поддерживать отечественного производителя
L U C C Y A N
Иван
У Лукашенко должен быть свой стафф из картофеля
Иван
Агроизыскание такое
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 одинаковое. Вот такое бы убрать как-нибудь) А как - что-то как-то не допру никак