Задать вопрос
  • Какой подход используется для выявления различных отклонений на экг?

    Vindicar
    @Vindicar
    RTFM!
    Средства анализа временных рядов? Необязательно нейронки.
    Из нейронок есть рекуррентные сети, к примеру. В любом случае комп зрение тут нужно только чтобы перевести рисунок ЭКГ в величины напряжений, если это ещё не сделано.
    Альтернативно - Фурье анализ по каждому каналу ЭКГ, и тренируешь обычную нейронку, подавая ей на вход конкатенацию полученных спектрограмм.
    Ответ написан
    Комментировать
  • Как передать большой файл по ssh без промежуточного хранения?

    Vindicar
    @Vindicar
    RTFM!
    А как насчёт scp -C? Там, правда, gzip-сжатие.
    Ответ написан
    1 комментарий
  • Как изменить текст в консоли питона?

    Vindicar
    @Vindicar
    RTFM!
    По пунктам:
    1. со стандартным input() такое не прокатит, придётся писать свой или искать сторонние либы.
    2. Если редактировать надо только последнюю строку: вывод символа \r переведёт курсор в начало строки, а \x08 - на один символ влево. Главное, не забудь предотвратить вывод перевода строки, пока не будешь готов. Редактировать предыдущие строки так нельзя.
    3. curses позволяет делать ОЧЕНЬ много, вплоть до отдельных окон в одной консоли, но под виндой из коробки не работает. Вроде был пакет windows_curses, который добавляет поддержку виндового терминала.
    Ответ написан
    1 комментарий
  • Почему не работает apscheduler?

    Vindicar
    @Vindicar
    RTFM!
    Так как ты не показал инициализацию scheduler, то спрошу: scheduler.start() не забыл вовремя вызвать?
    Также есть совет увеличить детализацию логов для скедулера.
    Ответ написан
    Комментировать
  • Хочу сделать проверку: есть ли канал на сервере или нет в функции для добавления его в БД?

    Vindicar
    @Vindicar
    RTFM!
    Если бот находится на этом сервере, то просто запрашиваешь канал через bot.get_channel() и потому уже проверяешь channel.guild.id на полученном канале.
    Если бота на сервере нет, то я без понятия, возможно ли получить информацию о сервере. Я бы предположил что нет.
    Ответ написан
  • Почему Python выдает ошибку в строке с newPosition?

    Vindicar
    @Vindicar
    RTFM!
    А какого баклажана ты пишешь несколько команд в одну строку? Не надо так делать.
    Ответ написан
  • Как заставить бота регулярно отправлять сообщения на канал в определённое время?

    Vindicar
    @Vindicar
    RTFM!
    Почитать про asyncio.create_task() и как им пользоваться.
    Создаёшь таск при старте бота (читаем доки на диснейк как реагировать на старт бота), в таске крутишь while True: в комбинации с asyncio.sleep(), пока не наступит нужный момент. Затем делаешь что нужно, и снова ждёшь.
    Оговорка 1

    1. Сохрани результат create_task() в переменную (глобальную или атрибут класса бота, если у тебя класс). Иначе со временем сборщик мусора соберёт объект задачи и задача прибьётся.
    2. Перед запуском фоновой задачи проверяй, а не запущена ли она уже. Вроде как on_startup() может вызываться неоднократно при некоторых обстоятельствах.
    3. При выходе из бота берешь этот объект задачи и делаешь что-то типа
    my_bg_task.cancel()
    try:
        await my_bg_task
    except asyncio.CancelledError:
        pass

    чтобы дать фоновой задаче спокойно завершиться.

    Оговорка 2

    Если у тебя только одна задача с ожиданием, то можно ждать самому, через asyncio.sleep(). В противном случае может пригодиться aioschedule или подобная библиотека. Тогда в фоновой задаче крутишь рабочий цикл этой библиотеки, а свои задачи планируешь уже через неё.
    Ответ написан
    1 комментарий
  • Как завершать программу анимированной гифкой?

    Vindicar
    @Vindicar
    RTFM!
    У тебя в коде полно вызовов third_window.grab_set(), хотя а) никакого третьего окна ты не показал и б) даже в коде, который относится к дургим окнам. Копипаст подвел, или так задумано?
    Ответ написан
  • При нажатии на button, вызвать cmd?

    Vindicar
    @Vindicar
    RTFM!
    Вызвать CMD где?
    На сервере - не вопрос вообще.
    На машине клиента - без предустановленного ПО не вариант, и слава богу что так.
    Ответ написан
    2 комментария
  • Как решить задачу на определения ближайшего др сотрудника?

    Vindicar
    @Vindicar
    RTFM!
    # Проверяем, попадает ли день рождения в диапазон
    if start_date <= birth_day_month <= end_date:
        birthdays.append((birth_day_month, name, surname))

    А с какого перепуга ты в список birthdays добавляешь модифицированную дату birth_day_month вместо оригинальной birth_date?
    Ответ написан
    Комментировать
  • Как избежать появления loop pyrogram?

    Vindicar
    @Vindicar
    RTFM!
    Чётко следить за тем, сколько у тебя в программе рабочих циклов (event loop). Такое возможно, в первую очередь, в многопоточной программе. Многопоточность+asyncio вообще тема нетривиальная.
    В связи с этим вопрос: что такое app=apps["My_loveroud"] и что происходит выше по коду?
    Ответ написан
  • Как добавить комментарий к карточке?

    Vindicar
    @Vindicar
    RTFM!
    Погоди, у тебя параметр id откуда должен браться, и как передаваться?
    ЕМНИП, параметры метода-обработчика - это в первую очередь GET-параметры. А у тебя в url для роута параметры не прописаны.
    Если ты берёшь id из поля формы, то убери его из параметров, и бери его аналогично text.
    Ответ написан
  • Как исправить ошибку: (init__.py:7144 MainThread) ERROR TeleBot: "message_handler: Commands filter should be list of strin gs (commands), unknown typ?

    Vindicar
    @Vindicar
    RTFM!
    Commands filter should be list of strings

    @bot.message_handler(commands={'start'})
    У тебя commands - не список, а множество (set).
    Ответ написан
    Комментировать
  • Каков должен быть sys.path у чистого Python 3.1x под Windows?

    Vindicar
    @Vindicar
    RTFM!
    [
      '', 
      'D:\\Python312\\python312.zip', 
      'D:\\Python312\\DLLs', 
      'D:\\Python312\\Lib', 
      'D:\\Python312', 
      'D:\\Python312\\Lib\\site-packages', 
      'D:\\Python312\\Lib\\site-packages\\win32', 
      'D:\\Python312\\Lib\\site-packages\\win32\\lib', 
      'D:\\Python312\\Lib\\site-packages\\Pythonwin'
    ]
    Ответ написан
    Комментировать
  • Классы. Принцип работы __add__ с __radd__?

    Vindicar
    @Vindicar
    RTFM!
    1. Пытается отработать x + y. Вызывается x.__add__(y) (или, что то же самое, Commuter5.__add__(x, y)).
    2. Внутри кода __add__() вычисляется выражение self.value + other. Вызывается self.value.__add__(other)(int.__add__(self.value, other), так как self.value содержит целое число).
    3. int понятия не имеет, что такое Commuter5 и как с ним складываться. Его __add__() возвращает NotImplemented. Питон понимает, что от int помощи не дождёшься.
    4. Поэтому вызывается other.__radd__(self.value).
    5. Внутри этого метода вычисляется выражение self.value + x. В данном случае x - это self.value для первого операнда, т.е. число. self.value - тоже число. int знает, как складываться с другим int, и выражение даёт int.
    6. Отрабатывает конструктор Commuter5() внутри __radd__(). Создаётся новый экземпляр класса, и возвращается как результат вызова __radd__().
    7. Отрабатывает конструктор Commuter5() внутри __add__(). Результат (ещё один экземпляр Commuter5) возвращается наружу.
    8. z присваивается результат, возвращённый вызовом __add__().

    По-моему, в коде ошибка, так как в результате у нас окажется, что внутри Commuter5() будет ещё один объект Commuter5(), внутри которого уже будет сумма. Ты можешь проверить это достаточно просто:
    print(type(z.value))
    Если выведет <class Commuter5 ...> - значит, я прав.
    Чтобы это исправить, операторы __add__() и __radd__() должны проверять, что получилось в результате суммирования, и не заворачивать результат в Commuter5() еще раз.
    Ответ написан
    2 комментария
  • Не работает aioscheduler, aiogram 3. Как сделать что бы работал?

    Vindicar
    @Vindicar
    RTFM!
    @dp.message(CommandStart())  # обработчик события!
    async def dejur(message: Message):
        ...
    
        aioschedule.every().minute.do(dejur)  # планируем вызов функции

    Запомни раз и навсегда - никогда не вызывай обработчики событий напрямую.
    Если тебе нужно реализовать одну и ту же функциональность и в обработчике, и где-то ещё - вынеси эту функциональность в отдельную подпрограмму, и уже её вызывай и в обработчике, и в других местах.
    В твоём случае можно сделать что-то типа такого:
    async def send_duty_list(chat: int):
        print(1)
        global n,skipper
        if weekday():
            await bot.send_message(chat, text=f"Дежурные: {spisok[n]}")
            if skipper == True:
                if n!=14:
                    n = n+1
                else:
                    n=0
                return n
            else:
                skipper = True
                return skipper
    
    @dp.message(CommandStart())
    async def dejur(message: Message):
        await send_duty_list(message.chat.id)  # шлём ответ в тот же чат, где была команда
    
    
    async def scheduler():
        aioschedule.every().minute.do(send_duty_list, chat=1108995102)  # а тут шлём фиксированному юзеру
        while True:
            await aioschedule.run_pending()
            await asyncio.sleep(1)


    Кроме того, имей ввиду:
    async def on_startup(_):
        asyncio.create_task(scheduler())

    У тебя созданный объект задачи может быть собран сброщиком мусора - что, разумеется, прервёт задачу.
    Так что сохраняй ссылку на задачу куда-нибудь в глобальную переменную.
    scheduler_task = None
    
    async def on_startup(_):
        global scheduler_task
        scheduler_task = asyncio.create_task(scheduler())
    Ответ написан
    Комментировать
  • Python pyautogui есть ли решение задачи?

    Vindicar
    @Vindicar
    RTFM!
    Нужно отложить скрипт, взять учебник по Питону, и почитать, что такое исключения и как с ними работать (оператор try-except).
    Тогда станет понятно, почему твой код не работает, и как его поправить.
    Ответ написан
    Комментировать
  • Как можно оптимизировать этот код?

    Vindicar
    @Vindicar
    RTFM!
    Для начала определи, что у тебя занимает время - скачивание, или парсинг. Подходы будут разные.
    Если хочется в лоб решать задачу - то multiprocessing в руки, даёшь дочернему процессу URL, он тебе возвращает структуру данных. Главный процесс раздаёт URLы и собирает ответы в какое-то итоговое хранилище.
    Пример работы с пулом процессов.
    Ответ написан
    Комментировать
  • Как реализовать систему рекомендаций с телеграм боте на aiogram (по типу давинчика)?

    Vindicar
    @Vindicar
    RTFM!
    Наиболее простой способ примерно такой. Ранжируешь пользователей по тому, сколько у них лайков на тех же элементах, которые уже лайкнул ты. Возможно, стоит рассматривать только недавние лайки.
    Затем берёшь из этого списка N первых - они будут "образцами". Усредняешь их лайки, выбираешь наиболее лайкнутые элементы, которые ещё не лайкнул ты. Это и будут рекомендации.
    Ответ написан
  • Для чего нужны метаклассы в Python?

    Vindicar
    @Vindicar
    RTFM!
    Это механизм, позволяющий изменить процесс создания класса.
    Например, превратить аннотации типов в классе в поля/свойства экземпляра и автоматически создать их в конструкторе, или зарегистрировать созданный класс в некотором реестре, или ещё что-то. Да, всё это можно сделать и с помощью декораторов или иных инструментов - но метаклассы позволяют это сделать вообще без дополнительных телодвижений со стороны пользовательского кода.
    Как, по твоему, тот же pydantic превращает описание класса-модели, состоящее из одних аннотаций, в класс с геттегами/сеттерами, валидацией и ещё чёрт знает чем?
    Ответ написан
    Комментировать