Ответы пользователя по тегу Python
  • Что делать если выдаёт ошибка с модулем Discord?

    Vindicar
    @Vindicar
    RTFM!
    Ну так у тебя библиотека для работы с discord не установлена. Почитай в документации, как её установить.
    Мне лениво
    В командной строке pip install discord.py. Это если ты используешь именно discord.py, а не один из его клонов.
    Ответ написан
    Комментировать
  • Как включить разделитель в данное выражение на Python?

    Vindicar
    @Vindicar
    RTFM!
    print(f"{a:016_b}")
    Ответ написан
    Комментировать
  • Каким образом можно обучить ИИ распознавать лицо python?

    Vindicar
    @Vindicar
    RTFM!
    Ты вполне можешь использовать Tensorflow без готовой модели.
    Для поиска лица вообще нейронка не нужна, хватит старого доброго каскада Хаара.
    Ты лучше подумай, где возьмёшь размеченную базу для обучения на несколько тысяч лиц.
    Ответ написан
    Комментировать
  • Как ускорить работу с большими таблицами данных?

    Vindicar
    @Vindicar
    RTFM!
    Я подозреваю, ты пытаешься на каждую строку данных создавать объект PyQT. Такого издевательства оно не переживёт.
    Вместо этого при прокрутке определи первую и последнюю видимую позицию в данных, очисти текущее содержимое своего окна с данными, и выведи только видимую часть данных.
    Ответ написан
    Комментировать
  • Почему выходит ошибка Bad Request: message text is empty, хотя сообщение не пустое!?

    Vindicar
    @Vindicar
    RTFM!
    File "C:\Users\user\Desktop\.py Black list aio\handlers\add_guest.py", line 45, in get_iin
        await message.answer('')  # <--- вот тут
    Ответ написан
    Комментировать
  • Как ввести байты через input?

    Vindicar
    @Vindicar
    RTFM!
    input([prompt])
    If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.

    Напрямую - никак, input() всегда преобразует результат в строку. Если надо читать бинарный поток со стандартного входа, используй sys.stdin.buffer. Это файловый объект, но он не текстовый, а бинарный.
    Ответ написан
    Комментировать
  • Как сделать из кода пайтон exe файл?

    Vindicar
    @Vindicar
    RTFM!
    Тебе суперкритично --onefile? Режим одной папки не подойдёт?
    Ответ написан
  • Как ввести длинный поток байтов?

    Vindicar
    @Vindicar
    RTFM!
    sys.stdin.read() в цикле, пока не прочитаешь пустую строку.
    Ну или запиши в файл и читай оттуда, таким же способом.
    Ответ написан
    1 комментарий
  • Как сделать цикл разархированния файлов zip?

    Vindicar
    @Vindicar
    RTFM!
    Шаг 1: сделай на базе своего кода подпрограмму, которая делает то, что нужно, принимая в качестве параметра путь к zip-файлу и путь к целевой папке session.
    Шаг 2: получи список путей к zip-файлам, подлежащих обработке
    Шаг 3: для каждого файла вызови свою подпрограмму.
    Ответ написан
  • Как сделать правильный порядок отображения?

    Vindicar
    @Vindicar
    RTFM!
    Что-то такое?
    from collections import Counter
    from collections.abc import Hashable
    
    def combine_suggestions(user: list[Hashable], glob: list[Hashable]) -> list[Hashable]:
        uc = Counter(user)
        gc = Counter(glob)
        for key in uc:
            gc.pop(key, None)
        u = uc.most_common()
        g = gc.most_common()
        return [item[0] for item in (u + g)]

    https://docs.python.org/3.9/library/collections.ht...
    Ответ написан
    Комментировать
  • Почему callback_query_handler не видит call.data?

    Vindicar
    @Vindicar
    RTFM!
    Во всех примерах это работает именно так...

    Не верю.

    bot.register_next_step_handler() принимает обработчик следующего сообщения, а не кнопки. Собственно, твоя функция и получает объект сообщения.
    Ответ написан
    2 комментария
  • Не правильная проверка ячейки таблицы через цикл, почему не записывается переменная?

    Vindicar
    @Vindicar
    RTFM!
    Ты уверен? Как насчёт явно задать порядок выборки нужных тебе столбцов в select?
    Что-то в духе SELECT id, name, chat_id FROM users. Названия столбцов укажи свои, и только используемые в данном коде.

    Далее, с БД так не работают. Ты выбираешь все строки, а потом вручную ищешь совпадение - это глупо.
    Лучше попроси БД найти нужные тебе строки.
    cur.execute('SELECT id, name FROM users WHERE chat_id = ?', (call.message.chat.id,))


    К слову, что ты подразумеваешь с под "третья"? Индекс 3? Или "третья с начала" (индекс 2)?
    Ответ написан
    Комментировать
  • Почему падает бот?

    Vindicar
    @Vindicar
    RTFM!
    Рвётся коннект до телеграмма. Сеть - штука ненадёжная, может у провайдера админ пьяный, может, контакт плохой, может, РКН балуется.
    Допиши скрипт, чтобы при ошибке соединения бот перезапускался.
    Я бы начал с чего-то типа
    import time
    from requests.exceptions import RequestException
    
    while True:
        try:
            bot.infinity_polling(timeout=10, long_polling_timeout = 5))
        except RequestException as err:
            print(err)
            print('* Connection failed, waiting to reconnect...')
            time.sleep(15)
            print('* Reconnecting.')
    Ответ написан
    1 комментарий
  • Как правильно использовать оператор or в pyautogui?

    Vindicar
    @Vindicar
    RTFM!
    Первый вариант правильный, второй не очень.
    Но есть два но:
    1. Тебе важен только сам факт наличия картинки на экране, или нужны её координаты?
    Если нужны координаты, то лучше сделать по умному, и не искать одну и ту же картинку дважды:
    # перечисляешь в списке изображения. цикл остановится на первом найденном.
    for image in ['link.png', 'link1.png']:
        location = pyautogui.locateOnScreen(image)
        if location is not None:
            break
    else:
        image, location = None, None

    Тогда дальше сможешь проверить, если location is not None - значит, что-то нашли. Что именно - лежит в image. Где именно - лежит в location.

    2. Какая у тебя версия библиотеки pyautogui? Начиная с 0.9.41, вместо функция locateOnScreen(), не найдя изображение, не вернёт None, а выкинет исключение. Тогда код будет выглядеть как-то так:

    for image in ['link.png', 'link1.png']:
        try:
            location = pyautogui.locateOnScreen(image)
        except pyautogui.ImageNotFoundException:
            pass
        else:
            break
    else:
        image, location = None, None
    Ответ написан
    Комментировать
  • Возникает ошибка, но не знаю какая?

    Vindicar
    @Vindicar
    RTFM!
    Волшебный человечек пришел в магазин и обнаружил, что у него есть ровно по две монетки каждого достоинства.

    Я не вижу, как ты учитываешь этот факт. Если ты прочитал со входа номиналы монет "5 10 50 100", то тебе нужно использовать для разложения список монет [5, 5, 10, 10, 50, 50, 100, 100].
    Ответ написан
  • Как замокать метод __next__?

    Vindicar
    @Vindicar
    RTFM!
    Вообще делать return self из __iter__() не очень хорошая идея.
    Или верни итератор по внутренней коллекции, т.е. iter(self.nums). Это имеет смысл, так как чтение коллекции циклом for по-хорошему не должно приводить к её модификации. Для этого лучше сделать явный метод.
    Или сделай из __iter__() генератор, и делай yield значения.

    В обоих случаях определять __next__() не потребуется.
    Ответ написан
    2 комментария
  • Как передать параметр в декоратор в рантайме?

    Vindicar
    @Vindicar
    RTFM!
    Декорировать функцию после получения параметров. Не забывай, что
    @formatter(p1, p2)
    def csv_reader(filename, request):
        ...

    эквивалентно
    def csv_reader(filename, request):
        ...
    
    _temp = formatter(p1, p2)
    csv_reader = _temp(csv_reader)


    Альтернативно, пусть возвращаемая фукнкция имеет свойства:
    def formatter(parse_func):
        def output_func(*args):
            ...  # тут обращаемся к output_func.p1, например
    
        output_func.p1 = p1
        output_func.p2 = p2
        return output_func
    
    
    @formatter
    def csv_reader(filename, request):
        ...
    
    csv_reader.p1 = a1
    csv_reader.p2 = a2

    Вместо функции можно вообще вернуть callable object, т.е. объект класса с методом __call__(), и любыми нужными свойствами и методами.
    Ответ написан
    1 комментарий
  • Почему метод get.users, flieds = online, возвращает None?

    Vindicar
    @Vindicar
    RTFM!
    Попробуй передать параметр по имени, .get(user_ids=user_id)
    Ответ написан
  • Почему код перестает работать при импорте?

    Vindicar
    @Vindicar
    RTFM!
    sqlite не поддерживает толком одновременную работу в нескольких потоках.

    1. У тебя парсер? Перепиши код на асинхронный, тебе не сдалось на самом деле использовать потоки. Они 90% времени будут спать и ждать сетевого ответа. Асинхронный код выполняется в одном потоке, так что таких проблем не будет.
    2. Создай отдельный поток, который будет заниматься только работой с базой, и общаться с остальными через какое-то api, например, кладём запрос, данные и какой-то id в очередь, потом читаем ответ из словаря. Но ты по факту будешь писать свой кривенький СУБД-сервер, так что...
    3. Вместо sqlite используй любую полноценную СУБД, которая умеет параллельные соединения. Postrge, mariadb, что угодно.
    Ответ написан
  • Отличается ли мультипроцессинг от запуска нескольких программ?

    Vindicar
    @Vindicar
    RTFM!
    Простотой коммуникации между скриптами, в т.ч. распределения задач между ними.

    Во-втором случае у тебя есть готовое решение по распределению задач и сборке результатов. Но с ограничениями - например, под капотом используется pickle, так что передавать можно только ограниченный набор объектов.

    В первом случае всё придётся писать самому, что и плюс, и минус.
    Ответ написан
    Комментировать