Ответы пользователя по тегу Python
  • Как автоматически активировать мышку при запуске Windows?

    Vindicar
    @Vindicar
    RTFM!
    Посмотри в сторону pywinauto. Он имитирует клики мышью по-другому, по идее должно работать.
    Ответ написан
  • Почему то ошибки в консоле нету, но и сообщение (123), не отправляться (aiogram)?

    Vindicar
    @Vindicar
    RTFM!
    test = False
    Ниже
    if test == True:
    async def prdfg(message: types.Message):
    У тебя prdfg не будет объявлено, так как на момент выполнения этой строки test всё ещё False.
    Ответ написан
  • Почему при больших данных виснет asyncio?

    Vindicar
    @Vindicar
    RTFM!
    Ты грузишь весь миллион адресов в память, дважды.
    Первый раз, когда делаешь f.read(), потом в рамках .splitlines() создаётся копия (разбитая по кусочкам-строкам).
    Ну и да, миллион индивидуальных тасков - это тоже дохрена. asyncio ведь надо проверить, может ли тот или иной таск продолжить работу.

    Я бы сделал фиксированного размера пул тасков-воркеров , и заставил каждого воркера в цикле делать f.readline() самостоятельно, чтобы получить url для загрузки. И весь список в памяти хранить не надо, и контроль над количеством тасков получше.
    Ответ написан
    2 комментария
  • Как установить специфическую версию pip?

    Vindicar
    @Vindicar
    RTFM!
    Можно обновить (и, наверно, "остарить") pip с помощью самого себя, просто его надо вызвать как python3 -m pip и далее по тексту.
    Либо, раз уж используешь apt, то man apt в помощь, он это должен уметь.
    Ответ написан
  • Что делать выдает такую ошибку?

    Vindicar
    @Vindicar
    RTFM!
    Для работы с голосом нужна библиотека Opus.
    Но если на Windows она подгружается сама, на линуксе её надо грузить вызовом метода.
    Ответ написан
  • Как открыть ssh туннель на python?

    Vindicar
    @Vindicar
    RTFM!
    Посмотри в сторону Parallel-SSH, в частности под-модуля NativeTunnel. Но насколько я понимаю, с туннелями всегда морока.
    Ответ написан
  • Как проверять аргументы функции/метода?

    Vindicar
    @Vindicar
    RTFM!
    Если аргумент None, означает ли это, что должно использоваться некоторое значение по умолчанию? Если да, то можно вынести if по этому аргументу отдельно, а дальше вести себя так, словно аргумент задан.

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

    Vindicar
    @Vindicar
    RTFM!
    Что такое производная функции, знаешь?
    Ну вот представь, что массив - это набор значений функции в последовательных точках.
    Правда, остаётся вопрос, какой шаг брать - т.е., насколько по оси X отстоят друг от друга нулевой элемент и первый элемент. Простейший случай - считаем координатой X индекс элемента в массиве. Но тогда производная вообще считается тривиально, так как расстояние по X между соседними точками будет равно 1. В приведённом тобой примере шаг (dx) выбирается случайно.

    В примере кода приведён простейший способ расчёта производной по двум точкам. Он прост, хотя и чувствителен к погрешностям. Есть и другие.
    Ответ написан
    2 комментария
  • Как исправить ошибку в коде Python?

    Vindicar
    @Vindicar
    RTFM!
    А почему так много аргументов subprocess.Popen()?
    "powershell putty.exe ", login, "@", name_server, " -pw", password, - 6 штук.
    В документации четко написано: "args should be a sequence of program arguments or else a single string or path-like object. "
    А также:
    class subprocess.Popen(args, #и так далее
    args без звёздочки, так что это должен быть ОДИН аргумент. Т.е. коллекция строк, например, список.
    Ответ написан
  • Как сделать приветствие в боте дискорд?

    Vindicar
    @Vindicar
    RTFM!
    Правильно говорит. Имя функции с точкой типа "discord.on_member_join" в Питоне допустимым не является. Подучи сначала основы Питона, потом бросайся писать ботов.
    Ответ написан
    2 комментария
  • Здравствуйте. Как правильно написать функцию для определения типа данных при создании таблицы в sqlite3?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала не пытаться засунуть запрос в одну f-строку, а собирать его по частям. Нечитаемо же. И зачем тебе @staticmethod, если это не часть класса? А если часть класса, то почему staticmethod, а не classmethod - ты же обращаешься к константе data_type, которая должна быть в том же классе, не?
    А вообще, у меня такое чувство что ты пытаешься сделать свою ORM. Попробуй погоняй ponyorm или peewee, они простые и удобные.
    Ответ написан
    Комментировать
  • Как можно реализовать фильтрацию текста на python?

    Vindicar
    @Vindicar
    RTFM!
    Ну во-первых - это будет соревнование брони и снаряда, т.к. пользователи будут пытаться обходить ваш блэклист. Так что не ожидайте, что решение будет "раз и навсегда".
    Во-вторых, должно ли сообщение содержать хоть одно слово из белого списка, чтобы быть пропущенным? Не очень ясно, что вы имели ввиду под белым списком.
    В-третьих, и сообщение, и элементы фильтра должны подвергаться предварительной нормализации. Речь не только о приведении к регистру, но и работе с омографами (простейший случай - русское и латинское "о"), а также удалении некоторых символов (например, символ невидимого пробела или комбинаторные символы). Можно решить, заменяя перед проверкой разные символы на простейший омограф, например, русское о на латинское - как в сообщении, так и при подготовке черного и белого списков.
    В-четвёртых, нужно подумать о ложных срабатываниях. Грубо говоря, если мы не удаляем пробелы, пользователю достаточно написать "б л я" чтобы обойти нашу систему. Если удаляем, "гребля" будет давать ложное положительное срабатывание. Если занесём "гребля" в белый список и сделаем так, чтобы оно имело приоритет перед пересекающимся словом из чёрного списка - то тогда будет ложное отрицательное срабатывание на "игре бля". Разумеется, список слов зависит от контекста сообщений, но его составление будет долгим итерационным процессом.

    С учётом вышесказанного -
    1. нормализовать строку,
    2. проверить вхождение подстрок из чёрного списка,
    3. если они есть - проверить, есть ли вхождения подстрок из белого списка, пересекающиеся с вхождениями чёрного.
    4. убрать из рассмотрения все пересекающиеся вхождения чёрного списка
    5. если остались вхождения из чёрного списка - реагируем на сообщение как на нежелательное. Иначе считаем его допустимым.
    Ответ написан
    Комментировать
  • Почему не находит атрибут .group?

    Vindicar
    @Vindicar
    RTFM!
    Потому что надо не только прочитать сообщение об ошибке, но и понять его.
    Тебе английским по черном говорят, что ты пытаешься взять атрибут (в данном случае вызвать метод) у объекта типа None.
    Иными словами, re.search() тебе вернуло None.
    А когда это случается? Открываем документацию и читаем. Если коротко, строка в first_m не соответствовала указанному регулярному выражению.
    Ответ написан
    Комментировать
  • Как создать список треков?

    Vindicar
    @Vindicar
    RTFM!
    > upcoming.index(_)
    Попробуй использовать enumerate() для нумерации элементов списка (или иной коллекции).
    Ответ написан
    Комментировать
  • Как произвести вывод промежуточных результатов вычисления в элемент tkinter?

    Vindicar
    @Vindicar
    RTFM!
    В большинстве случаев, когда изменяешь элемент управления, он не перерисовывает себя немедленно - он только принимает к сведению, что ему нужно будет перерисовать себя при первой возможности. А первая возможность ему представится, когда твой обработчик calc() закончит работу.

    Поэтому есть пара вариантов.
    1. вызывать внутри цикла в calc() root.update_idletasks(). Это приостановит твой обработчик и даст шанс элементам управления отрисоваться, а потом возобновит выполнение.
    2. Разбить обработчик на отдельные короткие (это важно!) итерации. В конце каждой итерации планировать выполнение следующей с помощью root.after(), если требуется. Тогда в промежутках между завершением текущей итерации и вызовом запланированной следующей ткинтер будет успевать отрисовываться.

    В обоих случаех следует предусмотреть/проверить, что будет если нажать на кнопку дважды. Я подозреваю, ничего хорошего, так что кнопку стоит отключить на время выполнения обработчика.
    Ответ написан
    4 комментария
  • При использовании range( ), через N-ное количество циклов падает скорость?

    Vindicar
    @Vindicar
    RTFM!
    reversed(range(250))
    Зачем? Чем не устроил range(249, -1, -1)?

    Далее, ты и в up() и в down() в цикле создаёшь раз за разом один и тот же объект, а потом забываешь про него. Зачем устраивать разминку для сборщика мусора? Создай объект 1 раз и модифицируй его - либо в глобальной переменной, либо (лучше) в классе.
    Ответ написан
    Комментировать
  • Как из базы данных получить все значения столбца в список?

    Vindicar
    @Vindicar
    RTFM!
    Если используешь для работы с базой движок sqlite3, то будет как-то так
    con = sqlite3.connect("mydb.sqlite") #подразумеваю, что таблицу ты уже создал
    cur = con.cursor()
    cur.execute("SELECT id FROM users")
    ids = [row['id'] for row in cur]

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

    Vindicar
    @Vindicar
    RTFM!
    Непонятно, что именно ты пытаешься сделать.
    Если просто перевести скриншот в другое цветовое пространство, то вот этих двух строчек
    image = pyautogui.screenshot(region=(514, 495, 264, 12))
    image = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2GRAY)
    должно хватить.
    Дальше crop лучше делать средствами cv2, благо для этого достаточно средств numpy-массивов (а именно так cv2 хранит изображения).
    Ответ написан
  • Как получить список все классов из текущего файла?

    Vindicar
    @Vindicar
    RTFM!
    Нужно знать имя модуля. Для основного скрипта (который непосредственно выполняешь) это будет '__main__'. ЕМНИП это имя можно узнать из магической переменной __name__.

    import sys
    
    def enum_classes(module_name: str = __name__):
      module = sys.modules[module_name]
      return [v for v in vars(module).values() if type(v) is type and v.__module__ == module_name]


    Первая часть условия отсеет всё, кроме классов. Вторая по идее отсеет то, что попало в пространство имён через импорт типа "from X import Y".
    Ответ написан
    Комментировать