Ответы пользователя по тегу Python
  • Как я могу запустить python скрипт на vps?

    Vindicar
    @Vindicar
    RTFM!
    0. Получить SSH-доступ и подключиться.
    1. Поставить нужную версию питона, если она не установлена. Если она доступна в репозитории, то использовать yum или apt-get, в зависимости от того какой дистрибутив linux установлен на вашей VPS.
    2. Используя эту версию питона, запустить pip (python3 m -pip ......... ) чтобы поставить требуемые пакеты.
    3. Запустить скрипт, используя эту версию питона (возможно придётся указать полный путь до исполняемого файла python).
    4. Если нужно, чтобы скрипт запускался при рестарте VPS и работал в фоне, создать по образцу init.d скрипт или systemd модуль (в зависимости от дистрибутива), поместив в него команду запуска.
    Ответ написан
    Комментировать
  • Как заменить текст в виджете?

    Vindicar
    @Vindicar
    RTFM!
    Нужно сохранять где-то ссылку на объект кнопки, разуемеется.
    Ответ написан
    Комментировать
  • Как заменить client в когах?

    Vindicar
    @Vindicar
    RTFM!
    Ты можешь прописать id тип не int, а discord.Member, если не путаю. Тогда и fetch_user() не понадобится.

    P.S.: Вот только команда unban довольно бесполезная, через интерфейс дискорда это сделать быстрее. =p
    Ответ написан
  • Как найти ближайшие точки на координатной плоскости?

    Vindicar
    @Vindicar
    RTFM!
    Координаты строго целочисленные?
    Тогда обходи точки с помощью алгоритма floodfill, с центром в исходной точке.
    Например, для небольшого участка порядок будет таким:
    5 4 3 4 5
    4 2 1 2 4
    3 1 X 1 3
    4 2 1 2 4
    5 4 3 4 5

    Цифра - на какой итерации проверяются эти позиции.
    Т.е. сначала проверяешь соседние с исходной, потом соседние с ними, потом соседние с теми, и так далее.
    Если в позиции есть точка, добавляешь её в список найденных. Когда в списке найденных набралось 3 точки, останавливаешься.
    Ответ написан
    3 комментария
  • Как сделать подключение python программы к серверу?

    Vindicar
    @Vindicar
    RTFM!
    Ответ написан
    Комментировать
  • Библиотека для чертежей?

    Vindicar
    @Vindicar
    RTFM!
    Пакетов для рисования хватает. Pillow и opencv для произвольного рисования, matplotlib для графиков, большинство GUI-фреймворков имеют элемент canvas для произвольного рисования. Даже черепашка (turtle), и то есть.

    А вот для черчения... Тут много специфической мороки, так что невольно напрашивается вопрос: какую задачу решаете? Может, лучше взять тот же Компас-3D, и заскриптовать его?
    Ответ написан
    5 комментариев
  • Как сделать неопределённое наследование в python?

    Vindicar
    @Vindicar
    RTFM!
    Вообще сама необходимость в таком коде уже признак серьёзных проблем.
    Но если очень надо... В питоне классы - это объекты первой категории. С ними можно делать всё то же, что и с другими объектами, например, возвращать их из функций. Так что незачем возиться с class_name.
    Ответ написан
    3 комментария
  • Как нарисовать фигуру в pyhton с помощью TKinter?

    Vindicar
    @Vindicar
    RTFM!
    Используй canvas, метод create_polygon() для внешней границы, и creat_circle() для внутреннего круга.
    Надеюсь, формула для расчёта координат границы у тебя есть.
    Ответ написан
    Комментировать
  • Как написать бота в ВК для редактирования фото?

    Vindicar
    @Vindicar
    RTFM!
    Как, как - взять и написать!
    Что за библиотеку используешь для работы с чатами ВК? Открываешь её документацию, ищешь обработку сообщений, учишься извлекать прикреплённые изображения. Если не получится извлечь как файл, то хотя бы как URL.
    Если фото - URL, то далее в зависимости от того, какую ВК-библиотеку используешь. Если бот синхронный - скачивай картинку через requests, если асинхронный - через aiohttp. Так или иначе у тебя будет содержимое файла картинки, его и скармливаешь Pillow.
    В конце опять лезешь в документацию по либе ВК, смотришь как прикрепить файл к сообщению. Используешь это для того, чтобы отдать пользователю обработанную фотку.

    Код за тебя тут писать не будут всё равно, так что если нужны детали - пробуй написать сам, и с написанным уже приходи.
    Ответ написан
    1 комментарий
  • Как сделать так чтобы работа бота не прерывалась?

    Vindicar
    @Vindicar
    RTFM!
    У тебя два вечных цикла - один это bot.polling(), другой содержит schedule.run_pending(), и они обязательно будут конфликтовать.
    Я не вполне понял почему твой бот вообще работает - он не должен бы, хотя бы потому что reminder() нигде не вызывается, и ничем не декорируется. Разве что ты чего-то не показываешь.

    Есть два варианта их подружить по-человечески.
    1. засунуть один из циклов (лучше schedule) в отдельный поток
    2. использовать асинхронную библиотеку вроде pyrogram, и заменить time.sleep() на await asyncio.sleep().
    Ответ написан
    2 комментария
  • Как использовать multiprocessing в tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Исходи из того, что между процессами лучше передавать только примитивные типы данных и простые коллекции (списки, кортежи, словари). Так что не надо передавать объекты Tkinter как есть, извлеки из них требуемые данные и передавай их.
    EDIT:
    Идеальный сценарий - использование пары multiprocessing.Queue.
    Код дочернего процесса слушает одну очередь, и обрабатывает полученные там задания, а потом пишет в другую ответы.
    Код материнского процесса занимается работой с GUI, складывает задания в первую очередь, и время от времени мониторит вторую очередь на предмет новых ответов. Используй root.after() для мониторинга.
    Ответ написан
  • Как преобразовать features и target к одному размеру?

    Vindicar
    @Vindicar
    RTFM!
    Для начала, что ты хочешь сделать? Локализацию на изображении нескольких объектов из нескольких категорий?
    Тогда нужно подумать, как у тебя будет формироваться отклик сети, потому что золотое правило для большинства сетей - размер входа и размер выхода не могут меняться на ходу.
    Если ты не знаешь, сколько у тебя будет объектов, то лучше обучать сеть с прицелом на пиксельные карты. Грубо говоря, пусть тоже выдаёт изображение (можно уменьшенное), и на нём закрашивает прямоугольники разными цветами, соответствующими разным категориям.
    Ответ написан
    6 комментариев
  • Как при помощи модуля argparse написать консольную утилиту?

    Vindicar
    @Vindicar
    RTFM!
    Документацию по модулю открой хотя бы.

    Первый же пример уже даёт представление о том, как будет организован код.
    Создаёшь объект parser, добавляешь ему описания параметров вызовами add_argument(), затем натравливаешь его на аргументы командной строки вызовом parse_args(), который вернёт тебе объект, содержащий распарсенные параметры как атрибуты. Этот объект (его атрибуты) ты уже используешь по своему усмотрению.

    Всё, что после этого остаётся - разобраться с методом add_argument() и его параметрами, за что они отвечают, и какое поведение обеспечивают.
    Ответ написан
    Комментировать
  • Почему вылезает ошибка при выводе из словаря с данными?

    Vindicar
    @Vindicar
    RTFM!
    Вставь ошибку в гугл транслейт.
    TypeError: 'NoneType' object is not subscriptable - ты пытаешься обратиться к словарю/списку (т.е. используешь квадратные скобки), но у тебя вместо него None. Смотри полный traceback ошибки, на какой именно строке она возникает, определяй, какой словарь у тебя пропущен, и либо исправляй причину, либо добавляй проверку.
    Ответ написан
    2 комментария
  • Как вставить изображение в изображение, получая мем?

    Vindicar
    @Vindicar
    RTFM!
    Да чего тут думать.
    1. Определи список изображений, которые хочешь склеить, и загрузи их.
    2. Приведи их все к одной ширине вызовом Image.resize(). Как будешь целевую ширину определять, решай сам. Можно ориентироваться по размеру наибольшего из изображений.
    3. Просуммируй высоты (для отмасштабированных вариантов, не для исходных!), создай новое изображение, с такой же шириной и суммарной высотой (чтобы все кадры поместились).
    4. Используй метод Image.paste() для вставки кадра в целевое изображение. Он позволяет указывать вторым параметром позицию изображения - куда именно попадёт левый верхний угол вставляемого изображения. Так что начинаешь с точки (x=0,y=0), и после каждой вставки прибавляешь к y высоту только что вставленного изображения (плюс зазор, если хочешь).
    5. Сохраняешь итоговое изображение вызовом Image.save().
    Ответ написан
    1 комментарий
  • Как сделать чтобы команду нельзя было использовать 24 часа?

    Vindicar
    @Vindicar
    RTFM!
    Блин, ты поиском пользовался? Полно же таких вопросов на этом сайте, для самых разных мессенджеров. Причем как раз в такой формулировке, как у тебя.

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

    Vindicar
    @Vindicar
    RTFM!
    "As join() always returns None..."
    join() вообще никогда не возвращает ничего кроме None.
    Лучше сообщить потоку, куда он должен поместить результат.
    Например, так
    def thread_body(arg, target):
        result = "foo" + arg
        target.append(result)
    
    def call_thread(arg):
        target = []
        th = threading.Thread(target=thread_body, args=(arg, target))
        th.start()
        th.join()
        return target[0]

    Но этот код синхронный. У тебя, насколько я вижу, асинхронная программа, и th.join() её заблокирует.
    Может иметь смысл либо использовать run_in_executor(), либо переделать thread_body() на асинхронный код (если это возможно).
    Экзекутор сам создаст за тебя поток, к слову. Пример по ссылке.
    Чтобы получить объект loop, в котором работает твоя async-функция, используй asyncio.get_running_loop().
    Ответ написан
    1 комментарий
  • Вопрос к знатокам opencv?

    Vindicar
    @Vindicar
    RTFM!
    Сами - нет. Подбери один раз значение под свою задачу, и оставь его.
    scaleFactor - это шаг масштабирования при поиске объектов разного видимого размера.
    Чем он ближе к 1, тем более мелкие шаги делает алгоритм, тем больше этих шагов, тем дольше обрабатывается изображение. Чем он больше, тем быстрее обработка - но в то же время лицо "промежуточного" размера между парой шагов может быть потеряно.

    Следует учесть, что лицо может "теряться" не только из-за этого параметра, но и из-за множества других факторов.
    Ответ написан
    Комментировать
  • Как войти на сайт с помощью Python Requests?

    Vindicar
    @Vindicar
    RTFM!
    import requests
    USERNAME = 'email@mail.ru'
    PASSWORD = 'pwd'
    LOGIN_URL = 'https://naurok.com.ua/login'
    
    
    with requests.Session() as session:
        login_resp = session.get(LOGIN_URL) #куки, реферер
        login_resp = session.post(LOGIN_URL, data={'email': USERNAME, 'password': PASSWORD})
        info_resp = session.get('https://naurok.com.ua/test/monotonnist-i-neperervnist-funkci-parni-ta-neparni-funkci-1059187.html')
        #хочешь - сохраняешь
        with open('res.html', 'wt', encoding='utf-8') as dst:
            dst.write(info_resp.text)
        #хочешь - парсишь как тебе нужно.
    Ответ написан
    Комментировать