Задать вопрос
  • Зачем указывать в скобках родительский класс при определении дочерного класса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Чтобы унаследовать свойства родительского класса. Добавьте в A поля и методы, разница станет заметна.
    Ответ написан
    Комментировать
  • Как в Python вывести таблицу как в примере?

    @Drill
    Вообще-то, Prettytable понимает multirow

    data = [
        {'ip':'192.168.0.2', 'model':'DES-3200-26', 'uptime': '3d 12:03:05', 'uplink state': '25: up\n26: up', 'uplink err': '0\n11', 'uplink mcast': '24560\n113'},
        {'ip':'192.168.0.3', 'model':'DES-3200-52', 'uptime': '1d 04:00:15', 'uplink state': '49: up\n50: up\n51: down\n52: down', 'uplink err': '10\n1133\n0\n0', 'uplink mcast': '5497812\n3145\n0\n0'},
    ]
    
    def set_data_for_PrettyTable(data):
        field_names = data[0].keys()
        rows = []
        for row in data:
            rows.append(row.values())
        return field_names, rows
    
    field_names, rows = set_data_for_PrettyTable(data)
    
    table = PrettyTable()
    table.hrules = 1
    table.field_names = field_names
    table.add_rows(rows)
    table.align["uplink state"] = "l"
    print(table)


    +-------------+-------------+-------------+--------------+------------+--------------+
    |      ip     |    model    |    uptime   | uplink state | uplink err | uplink mcast |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.2 | DES-3200-26 | 3d 12:03:05 | 25: up       |     0      |    24560     |
    |             |             |             | 26: up       |     11     |     113      |
    +-------------+-------------+-------------+--------------+------------+--------------+
    | 192.168.0.3 | DES-3200-52 | 1d 04:00:15 | 49: up       |     10     |   5497812    |
    |             |             |             | 50: up       |    1133    |     3145     |
    |             |             |             | 51: down     |     0      |      0       |
    |             |             |             | 52: down     |     0      |      0       |
    +-------------+-------------+-------------+--------------+------------+--------------+
    Ответ написан
    Комментировать
  • Для чего используется "@" перед переменными в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Для того, чтобы вы задали себе этот вопрос и открыли для себя пользу учебников. 61a0da3259ddf867054068.jpeg Целая глава посвящена вопросу!
    spoiler
    Эти жулики в роликах про ботов сами этот вопрос изучили, а вас не учат, а заставляют как обезьянок повторять тупые действия. Так вам и надо, неучи.
    Ответ написан
    Комментировать
  • Существует ли зрение для робота без программирования?

    @calculator212
    ну это ж бред в наше время, тратить ресурсы на такие базовые, по моему, вещи. Сам я, если что, хеловорлд на питоне или баше, ну может чуть больше.
    как по мне бред так рассуждать с знаниями "хеловорлд на питоне или баше", что-то +/- готовое есть на гитхабе.
    "робот, та херня, которую ты объехал заехав в комнату называется мяч, прикати его мне"
    Конечно люди добавят возможность распознавания речи, понимания смысла слов на русском языке, а потом отдадут это в свободный доступ в скомпилированном виде и с открытыми исходниками.
    каждый производитель робота пылесоса заново изобретает велосипед
    Они могут покупать ПО у компании специализирующейся на этом.
    Ответ написан
    5 комментариев
  • Как sys.stdin, который выглядит как словарь превратить в словарь?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Так делать нельзя:
    dict = json.loads(str(sys.stdin))
    Нужно либо так:
    dict = json.load(sys.stdin)
    либо так:
    dict = json.loads(sys.stdin.read())
    Приведите остальной код тоже. Там наверняка такие же ошибки.
    Ответ написан
    Комментировать
  • В чем идея и как работают шаблоны?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос очень хороший.
    А ответ на него очень простой.

    Шаблоны нужны для отделения логики приложения от логики отображения.
    Разделив их, мы получим сразу кучу выгод:
    • Нормальную структуру приложения, когда вывод начинается только после того, как отработала вся логика. То есть у нас никогда не будет проблем с ошибкой headers already sent, с возвратом json-а вместо html, с выводом в page header-е тех данных, которые появляются только в процессе работы скрипта
    • Мобильность - один и тот же движок можно будет использовать на нескольких сайтах, меняя только шаблоны, но весь код оставляя одинаковым. Что поможет, в частности, вносить обновления в движок и исправлять ошибки на всех сайтах разом.
    • Разделение труда - сейчас обычно над отображением работают фронтендеры, то есть, когда бизнес-логика отделена от шаблонов, то любой фронт сможет с ней работать


    Соответственно, главное, что надо знать про шаблоны - это то, что любой вывод в РНР скрипте начинается только после того, как отработала вся бизнес-логика.
    Также важно понимать, что в самом по себе смешивании "кода и разметки" ничего ужасного нет. В шаблоне всегда будет код. Без него невозможно выводить динамический контент. Важно только - какой это код, к чему он относится? Код в шаблоне должен относиться только к самому шаблону. На первых порах новичку сложно это отличить. И это еще один плюс специализированных шаблонизаторов.

    После этого есть варианты, которые отличаются в основном удобством работы с кодом шаблона.
    Править HTML код записанный в виде РНР строки - это САМЫЙ неудобный .

    Дальше идут всякие наколенные решения, типа
    бизнес-логика
    include header
    ?>
    хтмл конкретной страницы
    <?php include footer ?>

    или чуть более продвинутый, когда шаблоны хранятся отдельно и могут вкладывться друг в друга. Сначала пишем функцию,
    function render_template($filename, array $data = [])
    {
        ob_start();
        extract($data);
        require __DIR__ . '/' . $filename;
        return ob_get_clean();
    }

    а потом в коде страницы пишем
    бизнес-логика
    ...
    $page_html = render_template('page.tpl.php', [
        'data' => $data,
    ]);
    echo render_template('main.tpl.php', [
        'navigaton' => $nav_list,
        'title' => $title,
        'page' => $page_html,
    ];

    где сами шаблоны это
    ...
            <?php foreach ($navigation as $item): ?>
                <li>
                    <a href="<?= e($item['href']); ?>"><?= e($item['title']); ?></a>
                </li>
            <?php endforeach ?>
    Важно! Любой вывод в этих шаблонах должен экранироваться в обязательном порядке (кроме очевидных случаев, когда мы выводим результат рендера).

    Ну и наконец нормальные шаблонизаторы, из которых я горячо рекомендую Twig.
    Главное, что про него надо знать - даже самые зелёные нубы осваивают его без затруднений. И настоятельно рекомендую сразу перейти на него, после того как наиграетесь с решениями на коленке.
    Ответ написан
    9 комментариев
  • Как достать из строки слово на следующий строке?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    А может лучше не заниматься извращением, а использовать библиотеки для парсинга html, например, bs4.
    Ответ написан
    2 комментария
  • Почему выдаёт ошибку 406?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    1. content-type: application/json;, так что
    r = requests.post("https://vto.pe/webapi/new/register", json={'email': email, 'password': pass1})

    2. Не все тело запроса передали, есть еще параметры
    Ответ написан
    Комментировать
  • Как исправить RuntimeWarning: coroutine was never awaited?

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

    print, request - синхронные в вашем коде нуль смысла асихронности
    перехватывать все исключения тоже не надо, может быть много побочек
    Ответ написан
    3 комментария
  • Как не получать блокировку от Гугл?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ясно же, не долбить запросами гугл, отправлять запросы через рандомное время и с разных ip с разными настройками. А как иначе-то? Неужели вы полагаете, что против гугля есть специальный простой и надёжный приемчик, а гугль такой «ну ладно, это же тот самый приёмчик…»
    Ответ написан
    4 комментария
  • Стоит ли искать ошибки при изучении языка?

    sptm
    @sptm
    software developer / DevOps engineer
    Как по мне, копипастить код в процессе обучения категорически не стоит — ведь, совершая и исправляя ошибки, вы учитесь гораздо эффективнее. Да и вникать в код получается лучше, если его вручную набирать.
    Ответ написан
    Комментировать
  • Как получить несколько значений листов?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Не требуется. Появление номерных переменных в коде - это признак того, что программист что-то делает не так.
    Ответ написан
    2 комментария
  • Как переместить все файлы в другую папку кроме папки с помощью терминала?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    $ cd $HOME/Videos
    $ mv !(filters) filters

    если не сработает значит нужно включить расширение регулярных выражений
    $ shopt -s extglob
    включено или нет можно глянуть командой
    $ shopt
    ...
    extglob        	on
    ...
    Ответ написан
    Комментировать
  • Как создать опциональный тип данных в python?

    @bqio
    https://bqio.github.io/
    Ответ написан
    Комментировать
  • Что делать с телеграмм ботом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Если непонятно что делать с ботом, он вам не нужен.

    Мне бот шлет уведомления в телеграм о разных моментах, типа надо коммуналку проверить, что-то куда-то оплатить, и так далее. Удобство в том, что текст я сам заранее подобрал, с нужными ссылками, например.

    Боту можно отправлять уведомление например поднять, остановить VNC сервер или веб-сервер на домашней виндовой машины (не люблю чтобы такое крутилось в фоне постоянно)

    Боту можно задавать и другие задачи. Но все это - если у вас обычные дела связаны с цифрой. Если нет - он вам скорее всего и не нужен.
    Ответ написан
    1 комментарий
  • Как лучше скомпилировать Python скрипт для успешного открытия на других компах с ОС Linux?

    @dmtrrr
    Backend developer
    службой информационной безопасности компании установлен запрет на обновление языка в ОС и установку сторонних .exeшников(и их аналогов).

    При таких ограничениях никак.
    Если у них уже установлен docker, то можно докеризировать скрипт.
    Ответ написан
    Комментировать
  • При парсинге сайта, из-за большого количества запросов блокируется ip, как этого избежать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Ну все верно. Нечего парсить сайты. Если таких как вы будет 10? А если 100? А если 1000? Ради вас покупать новые десятки серверов? Проще просто заблочить парсеры и все.
    Ответ написан
    Комментировать
  • Почему выдаёт ошибку 'NoneType' object has no attribute 'startswith'?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Переменная окружения DB_URL не установлена значит.
    Ответ написан
    Комментировать