Ответы пользователя по тегу Python
  • Как правильно выводить COUNT?

    Vindicar
    @Vindicar
    RTFM!
    Поясню ответ Everything_is_bad выше: эта запись соответствует встроенному типу данных питона - кортеж (tuple). Ты должен уметь этот тип данных узнать, и знать как работать с ним (а также со списками и словарями) ДО того, как браться за ботов. Это азы, без понимания которых ты будешь спотыкаться на каждой мелочи.
    Ответ написан
  • Как создавать фреймы в неопределённом кол-ве?

    Vindicar
    @Vindicar
    RTFM!
    Простой вариант - складывай нужные объекты в список. Если что, можно сделать список кортежей.
    Чуть более сложный вариант - опиши класс, описывающий пару кнопка-label, и реализующий логику выбора файла, и складывай в список экземпляры этого класса.
    Ответ написан
    Комментировать
  • Как остановить поток while true нажатием горячих клавиш?

    Vindicar
    @Vindicar
    RTFM!
    Потому что is_pressed() проверяет, нажата ли клавиша прямо сейчас. С 99% вероятностью у тебя нажатие начнётся и закончится когда выполняется time.sleep(), потому что он долгий. А потому на момент выполнения is_pressed() клавиша уже будет отпущена.
    Проще всего будет заменить один долгий sleep() на цикл из коротких ожиданий и проверок, примерно по 0,1-0,2 секунды.
    Ответ написан
    Комментировать
  • Как решить module 'cv2' has no attribute 'TrackerCSRT_create'?

    Vindicar
    @Vindicar
    RTFM!
    Как ставил OpenCV? Там несколько пакетов. opencv-python содержит только основные возможности, а целый ряд вещей вынесен в opencv-contrib-python. Плюс ряд алгоритмов доступен не во всех версиях, так что выясни, начиная с какой версии поддерживается этот алгоритм, и какая версия стоит у тебя.
    Ответ написан
    Комментировать
  • Как сохранить файл, который скачивается автоматически при переходе по ссылке?

    Vindicar
    @Vindicar
    RTFM!
    через requests сохраняется html код страницы, где нет и намека на файл

    Вариант 1: не убедил сайт, что твой бот - это не бот. Добавляй заголовки - реферер, куки, юзер-агент и т.д. Можешь их прямо скопировать с браузера.
    Вариант 2: сайт редиректит на нужную ссылку через JS. Разбери код страницы, найди как формируется ссылка и научись её извлекать, а потом уже эту ссылку качай через requests.
    Ответ написан
    Комментировать
  • Как активировать код путем нажатия правой кнопки мыши (Python)?

    Vindicar
    @Vindicar
    RTFM!
    Нажатия правой кнопки мыши где?
    А вообще посмотри в сторону нестандартного модуля mouse (ставится через pip).
    Ответ написан
  • Disnake в команде temprole возникла ошибка, в чём здесь ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Если коротко.
    "Object of type "None" is not subscriptable" - если при вызове команды не указан параметр времени, он будет None (так как ты указал значение None по умолчанию). Решения два.
    а) замени значение по умолчанию None на какое-то другое, например, "15m". Тогда, если срок не указан, то будет дан срок по умолчанию.
    б) Перед обращением к time проверяй, не None ли он. ЛЮБЫЕ обращения к переменной time допустимо производить, только если там не None.

    "t(time_letter)" - ты вызываешь некую функцию t. Судя по окружающему коду, она должна преобразовывать название интервала времени ("s", "m", "h" и т.п.) в длину этого интервала времени в секундах. "t" is unbound означает, то ты не объявил такую функцию в области видимости этого кода (например, выше по коду в том же файле). Эту функцию нужно объявить, тогда её можно будет использовать.

    Обе ошибки достаточно простые, если есть хоть какое-то знакомство с языком. А потому повторю актуальнейший совет: не учить язык по ботам. Боты - это НЕ просто. Начни с чего-то более простого.
    Ответ написан
  • Как вывести все элементы списка из массива списков json в Python?

    Vindicar
    @Vindicar
    RTFM!
    1. Перестаём путать списки и словари, чтобы не сбивать с толку ни себя, ни советчиков.
    2. Пишем функцию, которая проверяет один элемент внешнего списка на предмет "подходит-не подходит", и возвращает True если он подходит.
    3. Грузим JSON с помощью модуля json.
    4. Используем list(filter(...)), чтобы получить отфильтрованный список элементов, указав функцию из п.2 в качестве функции фильтра.
    5. Если нужны дополнительные операции, то перебираем полученный список, для каждого элемента выполняем нужное тебе действие.
    6. Сохраняем итог в файл с помощью всё того же модуля json, например.
    Ответ написан
    Комментировать
  • Как достать ссылки на страницы при парсинге?

    Vindicar
    @Vindicar
    RTFM!
    Вот ссылка в коде сайта:

    Как проверял, что она в коде сайта? Небось через браузер?

    Правило первое: при ошибке записывай в файл то, что тебе прислал сервер, для последущего анализа. Может, сервер понял, что твой бот - это бот, и там "уходи, противный" вместо ожидаемой тобой страницы. А может, там динамический сайт, с контентом, подгружаемым через JS.
    Ответ написан
    Комментировать
  • Что делать с ошибкой OperationalError: no such column?

    Vindicar
    @Vindicar
    RTFM!
    Блин, да когда же вы читать научитесь, а?
    Никогда не используй f-строки для формирования sql-запроса, это либо даёт невалидный SQL (как в твоём случае), либо оставляет лазейку для SQL-инъекции.
    Используй подстановку параметров. Про это буквально в каждом мануале по работе с БД пишут, но ведь читать - не модно.
    cursor.execute("INSERT INTO masseges (id, massege) VALUES (NULL, ?)", (text,) )

    Ну и да. Правильно пишется message, если речь о сообщениях.
    Ответ написан
    2 комментария
  • Почему не пaлучяется вывести принт в текстовый документ 111.txt?

    Vindicar
    @Vindicar
    RTFM!
    Как ты запускаешь скрипт?

    Поясню, почему это важно. Ты указываешь относительный путь к файлу. В ходе работы скрипта путь будет скомбинирован с текущим рабочим каталогом скрипта - который совершенно необязательно совпадает с каталогом, где скрипт находится. В зависимости от того, как ты запускаешь скрипт, рабочий каталог будет разным.

    Альтернативно, ты можешь попробовать указать полный (абсолютный) путь к файлу при его открытии.
    Ответ написан
    Комментировать
  • Как сделать данное действие?

    Vindicar
    @Vindicar
    RTFM!
    Ну т.е.:
    1. ты хочешь получить список пар ключ-значение из словаря
    2. каждое значение содержит список/кортеж строк
    3. тебя интересуют только те пары, в значении которых встречаются строки из заданной коллекции
    Так?
    b_set = frozenset(b)  # переделываем список b в неизменяемое множество
    result = {
        key: value  # генерируем словарь
        for key, value in a.items()  # на основании пар key-value словаря a
        if not b_set.isdisjoint(value)  # берём только те пары, в value которых есть элементы из b_set
    }

    А дальше итерируешь словарь result и делаешь с ним что тебе надо.
    Ответ написан
    1 комментарий
  • Как исправить ошибку с ИИ на tensorflow?

    Vindicar
    @Vindicar
    RTFM!
    Ты код-то сам писал вообще? Потому что какую-то абсолютно несвязную фигню творишь, как будто чатгпт что-то нагенерил.

    При обучении у тебя на входе модели свёрточный слой Conv2D. Такой слой по определению принимает на вход изображение. Ты задаёшь размер этого изображения как 28х28, что напоминает о популярной базе картинок цифр для обучения простых сетей MNIST. А дальше идёт вроде как простой классификатор на 10 классов, что тоже соответствует MNIST. Как будто из примера код взят.

    А при тестировании ты делаешь embedding текста и подаёшь на вход какие-то обрывки полученных токенов.
    Всё равно что пытаться присобачить половину ручной мясорубки к дизельному компрессору, потому что "ну оно же и там и там крутится!" Это вообще не может заработать в принципе.
    Ответ написан
    Комментировать
  • В чём заключается ошибка?

    Vindicar
    @Vindicar
    RTFM!
    Если ты используешь aiosqlite, то нужно использовать async with, а не просто with.
    Ответ написан
    Комментировать
  • Как удалить ссылку из txt после использования?

    Vindicar
    @Vindicar
    RTFM!
    Вместо random.choice() делаешь index = random.randrange(0, len(lines))
    Тогда у тебя не только будет random_line = lines[index], но и возможность сделать del lines[index] чтобы удалить эту строку. Однако удаление произойдёт только в твоём списке в памяти - тебе нужно будет записать список обратно. Открываешь файл для записи в текстовом режиме, и используешь метод writelines().
    Ответ написан
  • Не получается вывести число, как это можно исправить?

    Vindicar
    @Vindicar
    RTFM!
    for i in range (m, n ): перебирает числа от m до n-1 включительно, т.е. он не включает n.
    Ответ написан
    Комментировать
  • Disnake непонятная ошибка. Кто может помочь?

    Vindicar
    @Vindicar
    RTFM!
    Какие интенты ты задаёшь боту?
    Если приложить волевое усилие и открыть документацию, то можно увидеть, что для работы on_raw_reaction_add требуется интент reactions.
    Ответ написан
    Комментировать
  • Стираются данные при записи в коде телеграм бота, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Читаем доки.
    Синхронный телебот по умолчанию выполняет обработчики в пуле потоков, чтобы один медленный обработчик не ставил колом всего бота. Как следствие, ты ловишь т.н. состояние гонки, когда несколько обработчиков (или несколько копий одного обработчика), работающих в разных потоках, одновременно обращаются к одному ресурсу - например, к твоему словарю suggested_photos, или к файлу, или ещё к чему. Косяки при этом могут возникать самые весёлые - и, что самое неприятное, они будут то появляться, то исчезать в зависимости от порядка исполнения потоков.

    Так что либо пробуй отключать многопоточность параметром конструктора Telebot (ссылку на доки я дал), либо разбирайся, как писать многопоточные приложения - например, защищая глобальные ресурсы бота мьютексом.

    Также можешь попробовать перейти на асинхронный вариант телебота, но там нужно понимать как вообще устроены асинхронные приложения.
    Ответ написан
    Комментировать
  • Как сделать программу для перемещения файлов?

    Vindicar
    @Vindicar
    RTFM!
    Составляешь список документов в постановлениях (модуль pathlib, метод Path.glob).
    Перебираешь строки csv файла (стандартный модуль csv в помощь).
    Для каждого уникального ID (номера) в csv ищешь подходящее имя файла в постановлениях. Можно простым разбиением имени по символу № (смотри str.split() и str.partition()).
    Определяешь желаемый путь, куда записать файл. Стандартный модуль pathlib в помощь.
    Перемещаешь файл вызовом shutil.move() (стандартный модуль shutil).
    Ответ написан
    2 комментария
  • Как сделать генерацию паролей на python?

    Vindicar
    @Vindicar
    RTFM!
    itertools.product() позволит перебрать все сочетания символов. Поиграв с параметрами, можно даже задать правила вида "первый символ - согласная, второй - цифра, ..." . Но для брутфорса обычно лучше словарная атака.
    Ответ написан
    Комментировать