Ответы пользователя по тегу Python
  • Как сделать шанс в python?

    @iddqda
    network engineer, netdevops
    random.choice((5,5,5,5,5,5,5,5,7,7))
    Ответ написан
    Комментировать
  • Как исправить ошибку в коде?

    @iddqda
    network engineer, netdevops
    а что спрятано в тех закорючках?
    и что такое sshpass?
    я подобную задачу делал через стороннюю либу ssh2
    и кстати а почему стороннюю либу нельзя?
    а светить паролем в коде значит можно?

    еще как вариант решить твою задачу тупо ансиблом
    Ответ написан
  • Почему xpath не работает на файле?

    @iddqda
    network engineer, netdevops
    потому что namespace-ы
    чтоб от них избавиться я такой метод использую:
    https://github.com/jeremyschulman/xml-tutorial/blo...
    Ответ написан
    Комментировать
  • Каким образом организовать работу клиент-сервер на python для обработки данных с устройств?

    @iddqda
    network engineer, netdevops
    а клиент может в http(s)?
    в этом случае берешь готовый веб фреймворк и не изобретаешь велосипеды
    fastAPI, например, отличный вариант, очень легкий быстрый и с обалденной докой
    и в async умеет

    например вот так просто выглядит прием POST от клиента и запись в БД

    @app.post("/notes/", response_model=Note)
    async def create_note(note: NoteIn):
        query = notes.insert().values(text=note.text, completed=note.completed)
        last_record_id = await database.execute(query)
        return {**note.dict(), "id": last_record_id}


    дальше сам https://fastapi.tiangolo.com/advanced/async-sql-da...
    Ответ написан
  • Как установить терминал python в Vscode?

    @iddqda
    network engineer, netdevops
    про терминал уже ответили
    но хочу добавить, что vscode так же поддерживает ipython и jupyter-notebook нативно

    для первого просто попробуйте в коде набрать
    # %%
    print("hello world")

    чтоб запустиьт jupyter достаточно нажать Ctrl+Shift+P
    и начать набирать команду: create new blank jupyter notebook
    Всю команду набирать не обязательно
    где то после create n найдете ее в выпадающем списке
    Ответ написан
    1 комментарий
  • Как локально выполнить python скрипт c веб страницы?

    @iddqda
    network engineer, netdevops
    Я не настоящий програмер, так просто, балуюсь, можно сказать хобби
    поэтому не знаю современных практик, но ИМХО RabbitMQ это что-то достаточно древнее и слишком могучее

    Подобную задачу я решал с помощью Redis и RQ
    вместо RQ с python еще celery используют, но он позамороченней

    Все очень просто, твой веб сервер подключается к Redis и размещает в него задачу, вернув job_id
    RQ забирает задачу на исполнение и назначает ее свободному worker-у
    Задачи - это просто функции на Python которые описаны в отдельном файле
    Сервер зная job_id может дергать RQ и получать статус исполнения задачи
    Но сам он конечно ничего дергать не будет. Но должен предоставить такую функцию клиенту.
    Ну это если нужна интерактивность.
    вот здесь хорошо описана работа с RQ: https://habr.com/en/post/354752/

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

    @iddqda
    network engineer, netdevops
    import requests
    
    res = requests.get("http://localhost:8080/api/forecast")
    if res.ok:
        print(res.json())
    else:
        print("не шмогла")
    Ответ написан
    Комментировать
  • Парсер ACL Cisco, как правильно?

    @iddqda
    network engineer, netdevops
    не знаю как правильно
    А я для анализа ACL использую batfish
    ну и самописную тулзу обертку для удобства работы с ним
    в которой реализовал всего две необходимые мне функции
    1. проверяет пройдет ли пакет с заданными 5tuple (src ip, src port, dst ip, dst port, proto) через сеть или нет и благодаря какому правилу
    2. ищет ACE которые никогда не сработают

    батфиш умеет это делать сам. Достаточно скормить ему конфиги устройств и вызвать нужные функции
    И только что проверил. ObjectGroups он понимает

    вот пример:
    5f3e3623d47eb773658735.png
    Ответ написан
    4 комментария
  • Отправка составного POST запроса при помощи requests py на сервер маршрутизатора?

    @iddqda
    network engineer, netdevops
    'Content-length': '12030960'
    timeout = 2
    это 6Мбай/с или почти 50Мбит/с

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

    @iddqda
    network engineer, netdevops
    сам не пробовал, но в доке к requests немного по другому этот момент описан
    https://requests.readthedocs.io/en/master/user/qui...

    сравните ваш объект:
    files={'QueryRests.xml' : f}
    и пример из документации:
    files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel')}
    Ответ написан
    Комментировать
  • Как сделать чтобы python самостоятельно нажимал кнопк?у на сайте через библеотеку requests?

    @iddqda
    network engineer, netdevops
    1. открыть web-developer tools в браузере на странице с кнопкой
    2. перейти в раздел Networks
    3. Нажать на кнопку и увидеть запрос (скорей всего POST)
    4. Изучить запрос и попытаться сделать такой же с помощью requests
    Ответ написан
    Комментировать
  • Как правильно вложить один цикл внутри используемого?

    @iddqda
    network engineer, netdevops
    конструкция in range выдает по одному значению за цикл,
    а Вы это одно значение пытаетесь засунуть в две переменные
    для таких случаев придумали enumerate()

    правда Вам это не поможет.
    for rowm, index in range(len(mls_scc)):
        if row['gender'] == "M": 
            input_ssc_level = rd[rowm[1][0][index]].value

    Пройдете первую строчку, сломаетесь на 3-ей:
    > rowm[1][0][index]
    Ответ написан
    Комментировать
  • Как вернуть значение из form?

    @iddqda
    network engineer, netdevops
    Ваш код на фласке не имеет ничего общего с формами в html
    посмотрите может Вы файлы перепутали

    Если Вы используете метод request.form
    то ключ в методе и в форме должны совпадать

    т.е. для
    name = request.form["username"]

    в html форме должен быть такой input:
    <input type="text" name = "username" blablabla >
    Надеюсь понятно, что ключем здесь является username
    А ваши ключи в коде и форме не совпадают.

    Кроме того, для обработки и валидации html forms в Flask-е принято использовать WTF-Forms.
    По ссылке про него очень подробно и доходчиво: https://habr.com/en/post/346342/
    Ответ написан
    Комментировать
  • Как вызвать функцию Python из JavaScript?

    @iddqda
    network engineer, netdevops
    Ну по сути тебе надо создать веб приложение
    где бекенд будет вызывать твою готовую функцию, а на фронте форма из пары полей ввода и кнопки, на которую вешается обработчик на JS

    для бекенда я бы использовал FastAPI
    что-то типа такого:

    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/dialog/")
    def read_item(message: str, lang: str = 'ru'):
        return {'message': detect_intent_texts(TOKEN, SESSION_ID, message, lang)


    На фронте обычный JS fetch GET c параметрами (или POST, просто он чуть сложнее для бека)

    document.querySelector("#button").addEventListener("click", (event) => {
        const msg = document.querySelector("#message").value;
        const lang = document.querySelector("#lang").value;
    
        fetch('/dialog/?' + new URLSearchParams({
            message: msg,
            lang: lang,
        }))
            .then((response) => {
                if (!response.ok) {
                    throw new Error("HTTP error, status = " + response.status);
                }
                return response.json();
            })
            .then((data) => {
                alert(data.message);
            })
            .catch((error) => {
                alert(error);
            });
    });


    з.ы. у меня одноклассник был с таким именем
    Ответ написан
    Комментировать
  • Не получается установить библиотеки на ubuntu, что делать?

    @iddqda
    network engineer, netdevops
    Похоже у вас нет прямого доступа в интернет
    если есть прокси то укажите его в переменных среды (HTTP_PROXY, HTTPS_PROXY) или непосредственно в команде pip3 install:
    pip3 install -r requirements --proxy http://10.1.1.1:8080
    Ответ написан
    Комментировать
  • Случайные числа Python?

    @iddqda
    network engineer, netdevops
    как то так например:
    a = random.randint(1, 99)
    b = random.randint(1, 99)
    
    if a>b:
        a,b = b,a
    
    secret = random.randint(a,b)
    print (f"Это число от {a} до {b}. Я дам тебе 6 попыток.")
    Ответ написан
    6 комментариев
  • Как дебажить Python по ssh на удаленной машине (в Линукс) из Visual Studio?

    @iddqda
    network engineer, netdevops
    самое простое если Вы подключаетесь с Linux-а (или мака) и на том сервере есть X-ы и vscode
    то просто при подключении используйте параметр -X (ssh -X user@server) и дальше запускаете vscode из консолии дебажьте на здоровье.

    а вобще vscode умеет работать по ssh из коробки
    https://code.visualstudio.com/docs/remote/ssh
    Ответ написан
    Комментировать
  • Число пар одинаковых элементов в списке?

    @iddqda
    network engineer, netdevops
    какая то сложная логика
    просто взять длину списка и вычесть длину сета этого списка
    вот и будет количество пар (если троек, четверок итп то так просто уже нельзя)
    Ответ написан
  • Как лучше обыграть валидацию форм, если на странице 2 формы?

    @iddqda
    network engineer, netdevops
    во первых валидацию можно написать на js
    document.getElementById("myForm").addEventListener('submit', (event) => {        
            const data = new FormData(event.target);
            if(!formValid(data)) {
                  event.preventDefault();  // отменяем action формы
                  return;
            }
    })


    а во вторых можно не перегружать страницу
    точно так же сделать свой обработчик на submit
    в нем fetch post (ajax умер давно)
    document.getElementById("myForm").addEventListener('submit', (event) => {             
            const data = new FormData(event.target);
            fetch("/register", {
                method: 'POST',                                            
                body: data
            })
            .then((response) => response.json())
            .then((data) => {
                // тут рисуешь алерты в DOM
            })
            .catch((error) => {            
                console.log(`fetch.post response came up with an error: ${error}`);
            });
            event.preventDefault();
        })

    а со стороны фляги
    if request.method == 'POST':               
       data = request.form
       ok, err = validateForm(data)
       if not ok:
           return jsonify(err)
       DoRegisterUser(data)
       return redirect(url_for(index))


    в третьих если все же хочется оставить валидаторы wtf то просто надо сохранить состояние карточки
    для этого при переворачивании карточки добавить/убрать бит в cookie
    а при перезагрузке страницы прочитать этот бит и повернуть карточку нужной стороной
    https://www.w3schools.com/js/js_cookies.asp

    з.ы. может все совсем не так. я не настоящий сварщик (с)
    Ответ написан
    Комментировать
  • Какую БД выбрать для маленького файлового сервиса?

    @iddqda
    network engineer, netdevops
    FastAPI предполагает работу с БД через ORM в частности SQLAlchemy
    Который предоставляет слой абстракции.
    поэтому не так важно какая база будет использоваться.

    Начните с SQLite а потом, если не хватит, легко смигрируете на мускуль или постгрес
    Ответ написан