Ответы пользователя по тегу Python
  • Как исправить ошибку при использовании прокси в requests?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    У вас тип прокси указан https, а протокол в url прокси - http.
    Сделайте оба http и ошибка исчезает.
    import requests
    proxies = {
       'http': 'http://185.221.160.176:80'
    }
    url = 'https://www.selenium.dev/selenium/web/mouse_interaction.html'
    response = requests.get(
        url=url, 
        proxies=proxies)
    print(response)

    Правда, соединение будет по http, но я не уверен, что этот proxy вообще умеет проксировать https.
    Ответ написан
    Комментировать
  • Как обойти первоначальную авторизацию через терминал при создании TelegramClienta (telethon)?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В простейшем случае делают так:
    Одна функция (регистрации) вызывает другую (получения кода) а другая функция возвращается полученный код по return.
    def get_code():
        code = input('code, please:')
        return code
    
    def authorise():
        reg_code = get_code()
        print(f'received code: {reg_code}')
    
    authorise()

    Заметки на полях
    В вашем случае в коде вижу и FSM, и хранение каких-то данных в уникальных JSON, и всякое… тут по-хорошему вы, как автор кода, представляющий структуру и отношения между объектами, должен спроектировать свою программу и если не получается, приносить сюда уже конкретную проблему, что не получается при реализации, а не вот это.
    Кроме того, вопрос популярный, и вы сначала обязаны поискать самостоятельно.


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

    Но это так… первое, что пришло в голову. Тут есть много нюансов. Во-первых, возможно блокирование JSON-файлов и асинхронная гонка, соответственно надо сочинять какую-нибудь синхронизацию (а тут можно начудить так, что потом не распутать); во-вторых, не все хостинги поддерживают хранение созданных файлов; в-третьих, для этого придуманы Redis, in-memory SQLite и т.п.


    Есть варианты с глобальной переменной-словарем, есть с БД, наверное есть и с FSM (я ее вообще не знаю, поэтому не могу советовать, но раз там есть метод set, то надо смотреть внимательно, может уже там всё предусмотрено).
    Ответ написан
    Комментировать
  • Как можно записать multiline строку в файл, сохраняя символы новой строки?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Есть два варианта:
    1. Экранировать обратным слешем проблемные символы (кавычки и обратный слеш):
    multiline = '''
    report_number=$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d \'\\n\')
    '''
    print(multiline)

    2. использовать префикс строк r, который не дает обрабатывать содержимое строки, заставляет воспринимать ее как есть (тогда отдельные символы экранировать не надо):
    multiline = r'''
    report_number=$(head -n 1 "/root/cron_job_enumerator.txt" | tr -d '\n')
    '''
    print(multiline)
    Ответ написан
    3 комментария
  • Как искать потеряные кошельки?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В классе bitcoinlib.keys.Key нет атрибута secret_exponent
    Вы можете в этом убедиться разными способами, например функцией dir или просто прочесть код класса.
    Что делать? Понять, как правильно называется атрибут класса Key, которому вы хотели приписать значение private_key, и исправить код.
    Возможно, он называется просто secret. Но это не точно.
    Ответ написан
    Комментировать
  • Как решить проблему «mysql.connector выдает ошибку File not found (OS errno 2 — No such file or directory)»?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    проблема в
    Cláudia
    - содержит не ascii символ и, вероятно, программа спотыкается о него.
    Ответ написан
    Комментировать
  • Можно ли задать несколько вариантов обработки для одного типа исключения?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Так?
    def trytest():
        try:
            a = b // 0
        except ZeroDivisionError:
            print('zero!')
        except Exception as e:
            print(e)
    
    if __name__ == '__main__':
        trytest()
        b=1
        trytest()
    Ответ написан
  • Ошибка при попытки скачать requirements.txt, что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Во-первых, желательно убедиться, что вы ставите всё это в заранее подготовленное и активированное виртуальное окружение вашего проекта, а не просто в систему. Иначе библиотеки в системе могут конфликтовать по версиям.
    Во-вторых, некоторые библиотеки трудно ставятся методом сборки, поэтому их желательно ставить из wheel. Для этого есть два пути:
    • найти и скачать wheel под вашу ОС и ставить именно его, явно указав путь к скачанному wheel,
    • попробовать pip install wheel pycairo
    Ответ написан
    Комментировать
  • Как сделать возможность редактировать результат?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Перво-наперво вам надо изучить язык, на котором вы предполагаете писать код. Сейчас вы с ним познакомились, а надо - изучить.
    Затем вам надо изучить структуры данных и алгоритмы.
    Также неплохо было бы посмотреть, как устроены программы у других людей, на GitHub к примеру.

    Это в общем.
    В частности, чтобы в вашем коде можно было “менять числа не перезапуская программу”, это надо в программе предусмотреть. Например, так:
    while True:
        Поля = input('Кол-во полей? ')
        Заводы = input('Кол-во заводов? ')
        Лаборатории = input('Кол-во лаб.? ')
        
        print ('Поля', Поля)
        print ('Заводы', Заводы)
        print ('Лаборатории', Лаборатории)

    Это самый простой способ реализации, что называют «в лоб». Как именно это сделать «по уму» - надо приложить ум.
    За вас это могут сделать, но не здесь, а на freelance
    Чтобы вы смогли самостоятельно сделать это, см.первую часть моего ответа.
    Ответ написан
    2 комментария
  • Как в питоне обеспечить контроль целосности данных?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Как-то так?

    my_int_var = 555555
    print(isinstance(my_int_var, int))
    my_int_var = 555555.5
    print(isinstance(my_int_var, int))
    my_int_var = '555555'
    print(isinstance(my_int_var, int))
    my_int_var = True
    print(isinstance(my_int_var, int))
    my_int_var = b'True'
    print(isinstance(my_int_var, int))

    Может быть только проблема с bool, поскольку оно мэппится с 1/0.
    Ответ написан
    Комментировать
  • Как мне исправить ошибку KeyError: 18?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Хорошо бы понять, откуда в class_id попадает невалидное значение ключа?
    1. Если такого быть не должно, надо искать причину.
    2. Если такое возможно, надо обрабатывать это исключение через try/except KeyError, либо предварительно валидизировать значение class_id
    Ответ написан
    Комментировать
  • Как сделать так чтобы в конце кода когда человек нажимал Y код запускался заново?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В общем случае можно основной код обернуть в цикл «пока» с проверкой «пока пользователь отвечает Y, повторять тело цикла».
    Если пользователь ответит не Y, программа выйдет из цикла и новая игра не начнется.
    Ответ написан
    Комментировать
  • Как запустить Python приложения на хостинге с Cpanel?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В общем случае это означает, что там необходимо создать виртуальное окружение, активировать его и установить в него все необходимые библиотеки, включая aiogram. Но что касается вашего хостинга и как там это делать - вам надо самому разбираться.
    Ответ написан
    Комментировать
  • Как я могу передать функцию agree из callback_queries.py на main.py?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Используй from mymodule import my_function
    Ответ написан
  • Не понимаю почему выдаёт ошибки при смене города и написание того чтоб все было на рус яз?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Вам надо найти библиотеку в интернете, найти в ней папку и в папке модуль, в модуле найти класс Client, с которым проблема. В классе посмотреть, какие аргументы принимает конструктор класса __init__, и исправить аргумент, который у вас указан неверно и о котором вам и сообщает traceback.
    Ответ написан
    Комментировать
  • В чём проблема запроса к api Albion Online Data?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Думаю, причина в использовании метода словарей get - он не находит указанного ключа в словаре и возвращает None, а дальше проверка не проходит и цикл завершается.
    Почему возвращается None, это вы самостоятельно разбирайтесь, то-ли в ключе опечатка, то-ли такого ключа не возвращается, то-ли ваш парсинг где-то косячит.

    Советую поделить код на функции и отлаживать их отдельно. Советую после проверки на None в случае else выводить сообщение, к примеру «такого ключа не обнаружено» и т.п.
    Ответ написан
    Комментировать
  • Почему после совершения сделки в python приходят 2 уведомления?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Думаю, едва ли кто-нибудь захочет глубоко погружаться в чужой API - с этим вам придется, видимо, потеть самому. Если хотите в этом помощи - задавайте очень конкретный вопрос, причем отдельный, по API. А лучше в их поддержку, это прямее всего.

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

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Я бы предложил сделать что-нибудь вроде heartbeat в основной программе и скрипт-приемник heartbeat вне основной программы, который будет в случае остановки убивать все запущенные процессы программы и запускать новые.

    spoiler
    Но как это сделать практически, представляю смутно. Приходит в голову что-то вроде регулярного http-запроса и простенький локальный сервер, который слушает эти запросы и сбрасывает таймер. Главное, чтоб этот сервер не завис :))

    Вот, кстати, можно попробовать.
    И сервер какой-то простой…
    Ответ написан
  • Можете пожалуйста помочь с PYTTY?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    1. Не надо скачивать python вместо. Не трогайте тот python, который уже есть. Иначе можно вовсе потерять систему, к которой вы подключаетесь.
    2. Надо создать отдельное виртуальное окружение для вашего проекта и туда скачивать всё ПО, необходимое для проекта. Почитайте про виртуальные окружения python. Виртуальное окружение надо создавать там, куда вы подключаетесь, а не на локальной машине.

    Ответ написан
  • Нужно исправить ошибку EOFF ERROR,как это сделать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Полагаю, вы хотели что-то такое получить:
    A = list(map(int, input().splitlines()))
    print(max(A) - min(A))


    В случае, если вам надо обязательно использовать iter, его во-первых наверное надо как-то развернуть, например через *, а во-вторых, надо сделать лямбду, которая будет делать strip и потом только int. Мне лень городить этот огород, если то же достигается проще.
    Ответ написан
    Комментировать
  • Как заставить код скачивать все документы с сайта?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В этом виновато ваше безответственное отношение к обработке исключений, а именно
    try:
                    response = requests.get(file_name, timeout=20)
                except:
                    print(f"err. conn: {file_name}")
                    continue

    Это означает: если любая ошибка, закрываем на это глаза, печатаем, что у вас печатается, и продолжаем.

    Вот оно печатает и продолжает.
    Вам надо разобраться, какую же оно теперь возвращает ошибку в теле try, и исправить её или правильно её обрабатывать.
    Ответ написан
    2 комментария