Задать вопрос
Местоположение
Россия, Тюменская обл. и Ханты-Мансийский АО, Нижневартовск

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (7)

Лучшие ответы пользователя

Все ответы (9)
  • Как остановить скрипт python используя сочетание клавиш из любого окна?

    botermain
    @botermain
    Многопоточность - залог успеха, советую почитать эту статью, уверен, что ни раз пригодится

    Тем не менее, решение твоей проблемы довольно простое, с помощью модуля multiprocessing в отдельном процессе запускаешь функцию, которая будет слушать нажатия клавиш и завершать процесс по его PID:

    import os
    import signal
    import keyboard
    import multiprocessing
    
    
    def hook(pid):
        while True:
            if keyboard.is_pressed('ctrl + 1'):
                os.kill(pid,signal.SIGTERM)
                os._exit(1)
    
    
    if __name__ == '__main__':
        pid = os.getpid()
        multiprocessing.Process(target=hook,args=[pid]).start()
        #-----------------------------------------------------#
        #Здесь располагай свой код
        # -----------------------------------------------------#

    Конечно, можно также использовать модуль threading, но я более чем уверен , что будут проблемы с GIL, поэтому multiprocessing - это лучший вариант
    Ответ написан
    2 комментария
  • Как выглядит ID сообщения в телеграмме?

    botermain
    @botermain
    ID выглядит правильно, вопрос в том, правильный ли вы подставляете, давайте лучше получим ID отправленного нами сообщения и изменим его по нему, а не тыкая пальцем в небо. Расскажу на примере Telethon(Самая простая библиотека по моему мнению):

    Во первых, отправим сообщение и запишем его в переменную
    message = client.send_message(chat_id, text)

    После чего мы можем достать из переменной ID отправленного нами сообщения:
    message = client.send_message(chat_id, text)
    print("ID сообщения: ", message.id)


    И вот только теперь отредактируем его с помощью ID, который получили, вот пример рабочего кода:
    message = client.send_message(chat_id, text)
    client.edit_message(chat_id,message.id,text)


    Надеюсь, что объяснил понятно
    Ответ написан
    3 комментария
  • Как сделать ВК бота который читает данные с google sheet?

    botermain
    @botermain
    Да, это возможно!

    Работал много раз с Google Sheets, так что подскажу небольшой, но очень хороший гайд, тут рассказано всё, от того как создать ключ, до того, как получать и загружать данные в таблицу

    По поводу бота для ВК, можно использовать модуль vk_api, также отличный гайд для него
    Ответ написан
    Комментировать
  • Как сделать так, чтобы при появлении нового файла в папке, он отправлялся в telegram bot?

    botermain
    @botermain
    Я далеко не программист

    Поручи эту работу тому, кто в этом разбирается, ибо то, что ты хочешь сделать не для обычного пользователя пк

    Ну, а если серьёзно, тебе нужно как минимум подключать многопоточность, если требуется постоянная работа в чате после команды, после чего в бесконечном цикле запрашиваешь имена файлов и если появляется новое, берешь и подставляешь его:
    import telebot
    import threading
    import os
        
    bot = telebot.TeleBot('...................')
    
    def voiceloop(bot,chatId):
        files = set(os.listdir())
        while True:
            new = set(os.listdir())
            if new != files:
                try:
                    send = list(new.difference(files))[0]
                    bot.send_voice(chatId, open(send, 'rb'))
                    files = new
                except:
                    pass
    
    
    @bot.message_handler(commands=['start'])
    def start(massage):
        chatId = massage.chat.id
        text = massage.text.lower
        t = threading.Thread(target=voiceloop, args = (bot,chatId))
        t.start()
    
    
    bot.polling()

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

    botermain
    @botermain
    Для начала, я бы предложил обновить Python хотя - бы до версии 3.6, потому что начиная с этой версии манифесты спокойно позволяют использовать длинные пути без танцев с бубном

    Однако, если же обновлять Python не вариант, то должно помочь обращение к файлам по UNC путям с помощью префикса \\?\ или же в случае обычной строки Python \\\\?\\:
    import os
    
    prefix = '\\\\?\\'
    path = 'C:\Program Files (x86)'
    print(os.listdir(prefix+path))

    UNC не поддерживает релативные пути, значение path должно быть абсолютным
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)