Задать вопрос
  • Как сделать Python loop +1/-1?

    Vindicar
    @Vindicar
    RTFM!
    Избавиться от цикла for, вместо него используй while True, и внутри вручную меняй индекс текущего изображения в диапазоне от 0 до len(imList)-1.
    А вообще у тебя код кривой.
    cv2.imshow() требует два параметра - заголовок окна и загруженное в память изображение (массив пикселей).
    cv2.waitKey() и cv2.waitKeyEx() возвращают код нажатой клавиши, анализируй его, чтобы понять, что делать (идти вперёд, идти назад, прервать цикл).
    Ответ написан
    5 комментариев
  • Проблема с io.BytesIO()?

    Vindicar
    @Vindicar
    RTFM!
    Текущая позиция при truncate() не обновляется. Так что после отправки сделай снова
    fp.seek(0)
    fp.truncate()
    Ответ написан
    Комментировать
  • Как отправить запрос к сайту через определенный DNS-сервер в python?

    Vindicar
    @Vindicar
    RTFM!
    Есть довольно старый ответ на стэковерфлоу. requests под капотом использует urllib3, а та содержит функцию urllib3.util.connection.create_connection(), ответственную за установку TCP соединения. Соответственно, можно попробовать подменить эту функцию на свою реализацию, и использовать пакет dnspython для запросов.
    from urllib3.util import connection
    import dns.resolver
    
    def your_dns_resolver(hostname: str) -> str:
        """Получает на вход доменное имя, возвращает IP адрес в виде строки."""
        resolver = dns.resolver.Resolver(configure=False)
        resolver.nameservers = ["8.8.8.8"]  # список используемых DNS серверов.
        answer = resolver.resolve(hostname, "A")  # A-запись для IPv4 адреса, AAAA-запись для IPv6 адреса
        if len(answer) == 0:
            raise Exception("No A record found")
        return str(answer[0])
    
    _orig_create_connection = connection.create_connection
    
    def patched_create_connection(address, *args, **kwargs):
        """Wrap urllib3's create_connection to resolve the name elsewhere"""
        host, port = address  # оригинальный адрес для запроса
        hostname = your_dns_resolver(host)  # сами определяем IP по имени
        return _orig_create_connection((hostname, port), *args, **kwargs)  # дёргаем оригинальную функцию, чтобы создать соединение
    
    connection.create_connection = patched_create_connection

    Код не проверял, это скорее концепт чем готовый инструмент.
    Ответ написан
    9 комментариев
  • Как в Python подружить ввод данных с модулем?

    Vindicar
    @Vindicar
    RTFM!
    Смешались в кучу кони, люди...
    Чтобы узнать жерезо компа по сети, нужно, чтобы на компе работала программа, готовая получить эту информацию и отдать её по сети.
    Под виндой есть инструмент Windows Management Instrumentation (WMI), который позволяет собрать уйму информации о компе, присутствует всегда (насколько я знаю) и отвечает в т.ч. по сети. Так что готов спорить, что твой powershell скрипт просто обращается к нему.
    Увы, WMI базируется на открытом стандарте, но напичкан несовместимыми расширениями, так что имитировать его наличие на линукс-сервере может быть нетривиально. Спасибо Микрософту.

    Под никсами есть программа lshw (требуется установка из репозитория), она выдаёт выхлоп в консоль или в файл. Можно заставить целевые машины при загрузке запускать lshw и складывать результат на сетевой диск в формате xml, например. А оттуда уже собирать инфу самостоятельно.
    Ответ написан
    Комментировать
  • Как положить данные в json файл в нужное место?

    Vindicar
    @Vindicar
    RTFM!
    json прочитается в питоновскую структуру данных. В твоём конкретном случае - в словарь.
    Его и будешь модифицировать, а потом модифицированный словарь сбросишь обратно.
    Так что читай про:
    1. Работу со словарями
    2. функцию json.load()
    3. функцию json.dump()
    Ответ написан
    Комментировать
  • Как сделать более аккуратный код когда много строк стилей в DOM (element.style... = '...')?

    Vindicar
    @Vindicar
    RTFM!
    Я бы вынес это в отдельный класс и назначал его тем элементам, которые нужно стилизовать. Упрощает JS, упрощает HTML разметку, оставляет стили там, где им место - в CSS файле.
    Ответ написан
    Комментировать
  • Как вывести значения из базы данных без запятых скобок и т.д?

    Vindicar
    @Vindicar
    RTFM!
    fetchall() возвращает тебе список из кортежей.
    Если ты не знаешь, что это такое - бегом учить. Это абсолютно базовые структуры данных в питоне, для создания сколь-нибудь сложной программы с ними (+ещё словари) нужно уметь работать не задумываясь.
    Ответ написан
    Комментировать
  • Зачем надо закрывать курсор при работе с БД?

    Vindicar
    @Vindicar
    RTFM!
    Я полагаю, что закрывается.
    Другое дело, что время жизни у курсора и соединения разное.
    Курсор создаётся перед выполнением запроса (или цепочки запросов), и закрывается по их окончанию.
    Это позволяет иметь несколько активных курсоров одновременно, используемых в разных подзадачах.
    Соединение обычно создаётся в начале работы приложения, и закрывается в конце.
    Если приложение содержит только одну подзадачу, тогда да, время жизни курсора и соединения совпадёт.
    Ответ написан
  • Как разделить строку из SQL?

    Vindicar
    @Vindicar
    RTFM!
    fetchone() возвращает кортеж значений. Если не знаешь, что такое кортеж - почитай. Это одна из базовых структур данных в питоне, её нужно знать.
    Чтобы получить доступ к элементу кортежа, обращайся по индексу. Порядок элементов такой же, как порядок полей в запросе.
    Альтернативно, используй распаковку кортежа.
    Ответ написан
  • Хочу сделать бота, меняющего буквы английской раскладки на русские, что не так?

    Vindicar
    @Vindicar
    RTFM!
    Открой для себя str.translate().

    А вообще вот это:
    for i in range(len(text)):
            for i in text:

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

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

    Vindicar
    @Vindicar
    RTFM!
    root.mainloop()
    Этот вызов показывает окно Tkinter и уходит в цикл обработки событий. Цикл длится пока окно не закрыто (т.е. пока твоя программа работает).
    Твой цикл while 1: не будет выполнен до этого момента.
    Так что лучше производи весь ввод-вывод в обработчике choose_color(), или добавь отдельную кнопку для отправки.
    Ответ написан
    Комментировать
  • Typeerror, как решить хз, поможите?

    Vindicar
    @Vindicar
    RTFM!
    Читаем текст ошибки: get_userss() takes 1 positional argument but 2 were given. Иными словами, pytogram передал твоей функции 2 аргумента, а она принимает только один.
    Смотрим заголовок твоей функции:
    async def get_userss(message):  # <-- принимает один аргумент!

    Открываем документацию pyrogram, смотрим первый же пример кода:
    @app.on_message(filters.private)
    async def hello(client, message):  # <--- обработчик принимает два аргумента!
        await message.reply("Hello from Pyrogram!")


    Вывод: pyrogram ожидает, что функция-обработчик события примет 2 аргумента, а ты её объявил криво, с одним. Ну и не потрудился открыть документацию, я полагаю, иначе сразу бы заметил разницу.
    Ответ написан
    2 комментария
  • Как поменять середину в название в фото?

    Vindicar
    @Vindicar
    RTFM!
    Разбей имя файла с помощью метода split('_'), получишь список частей имени файла.
    Делай что тебе нужно с элементами этого списка.
    Потом соберешь его обратно в одну строку вызовом '_'.join(список).
    Ответ написан
  • Почему pymysql выдает Already Closed?

    Vindicar
    @Vindicar
    RTFM!
    В питоне блок with обычно используется для освобождения некоторого ресурса независимо от исхода выполнения кода в блоке with (нормальное выполнение, исключение, ранний return).
    В случае с соединением с СУБД, with self.connection: освобождает ресурс, т.е. закрывает это соединение, по завершению блока with. Если тебе нужно, чтобы соединение не закрывалось, не используй with.

    Я подозреваю, что ты написал with "потому что в туториале так написано".
    Ответ написан
    Комментировать
  • Как сделать удаление целой строки из txt файла по команде боту?

    Vindicar
    @Vindicar
    RTFM!
    Лучше это не делать. Текстовые файлы очень неудобны в вопросах "вставить текст в середину"/"удалить текст из середины", так как они хранятся как последовательность символов. Не строк. Символов.
    Так что единственный способ удалить строку заранее неизвестной длины из середины выглядит примерно так:
    Файл до:F O O B A R B A Z F E E. Мы хотим удалить BAR.
    Читаем часть файла, идущую после, и пишем её с начала BAR:
    F O O B A Z F E E F E E
    FEE в конце осталось от предыдущего содержимого. После этого делаем truncate, чтобы обрезать лишний хвост.
    F O O B A Z F E E
    Долго и муторно.

    Я бы посоветовал осилить базы данных, хотя бы тот же sqlite.
    Ответ написан
  • Ошибка пайтон как исправить?

    Vindicar
    @Vindicar
    RTFM!
    У тебя какая-то очень древняя версия питона, еще до 3.5.
    Ответ написан
    Комментировать
  • Как ускорить выполнение перебора?

    Vindicar
    @Vindicar
    RTFM!
    Задумайся для начала.
    Зачем ты для каждой попытки i заново суммируешь числа от 1 до i-1, если ты уже суммировал их на предыдущей итерации?
    Если не осилил

    m = .....
    n = 0
    while m > 0:
        n += 1
        m -= n ** 3
    print(n)

    Ответ написан
    Комментировать
  • Почему при подсчете количества строк в SQLite3 выводится не число, а 0x0000009E9DC70E30>?

    Vindicar
    @Vindicar
    RTFM!
    1. Ты получил объект-курсор. У него нет строкового представления, поэтому пр ивыводе он отображается по умолчанию - <Cursor object at адрес-объекта-в-памяти>
    Чтобы получить выбранные данные, нужно вызывать методы fetchone() или fetchall().
    2. Если ты делаешь запрос к БД, который возвращает данные (неважно какие), получить их придётся как описано выше. Что это за данные - сами строки, какая-то агрегатная функция, или еще что - не важно. Даже если выполнишь запрос вида SELECT 123;, всё равно результат придётся вытаскивать через fetchone()/fetchall().
    3. SUM(id) вернёт тебе сумму всех идентификаторов строк в таблице, а не количество строк в ней. Используй COUNT(*).
    Ответ написан
    Комментировать
  • Можно ли на python задать распределение по четырем моментам?

    Vindicar
    @Vindicar
    RTFM!
    Насколько я знаю, из коробки такого способа нет.
    Вообще это будет уже НЕ нормальное распределение, и я бы посоветовал попробовать применить другую модель распределения. Например, бета-распределение даёт довольно широкий диапазон форм графика плотности вероятности, и при определённом соотношении между параметрами a и b выглядит как раз как смещённое нормальное распределение.
    Ответ написан
    Комментировать