Ответы пользователя по тегу Python
  • Вывод данных в Flask?

    @Zanak
    1. Не очень понял, зачем вы использовали g. Просто для накопления данных в процессе обработки хватило бы и обычной переменной, а для хранения данных между запросами она не применима (Смотрите замечание на этот счет).
    2. Если вы сами ловите исключение, то и обрабатывать его лучше полностью, с указанием шаблона и кода ответа. На вашу проблему это не влияет, но это просто хорошая привычка, не делать ни чего, или доделывать до конца.
    3. Что подразумевает return внутри блока with? Если объявить переменную аккумулятор значений из файлов выше цикла по файлам, и вместо g.data_local ... и return ... написать код отправки прочитанного значения в накопитель, например как здесь, а потом передать содержимое аккумулятора в шаблон, под именем peopls, не получится именно тот эффект, которого вы и добивались?

    Пара мыслей помимо вашего кода:
    Какова дальнейшая судьба файлов, которые вы уже обработали, вы будете их читать опять, при следующей итерации? Если файлы будут добавляться достаточно часто, то каждый следующий запрос будет работать дольше предыдущего. Может стоит еще раз подумать?
    В зависимости от объема файлов и/или их количества, в особо тяжелых случаях, вы можете упереться в лимит времени ответа. Чинится это легко, но помнить об этом стоит.
    Ответ написан
    Комментировать
  • Как добавить perl скрипт в python проект?

    @Zanak
    Конвертеров с perl на python нет, потому что эти языки достаточно разные. В простых случаях возможен подстрочный перевод, но это все равно должен делать человек.
    Наиболее правильный путь - не прикручивать верблюда к змее, а перенести все на один язык. Как минимум, это избавит вас от необходимости иметь 2 языка в системе со всеми зависимостями, которые этот винегрет требует. Perl далеко не так сложен, как принято о нем думать и книг по этому языку в сети полно, в том числе и на русском языке. Если вы знакомы с php, то на "освоится с различиями", достаточно для понимания происходящего, у вас уйдет часа 4 - 5. А дальше все упирается в скорость вашего кодинга на питоне.
    Если все таки идти по сложному пути, то нужны подробности по поводу perl части:
    - если задача запустить, дождаться окончания и продолжить работу, os.system вам поможет
    - если это сервис, который нужно запустить и потом с ним пообщаться из питона, то запускаться он должен как самостоятельный процесс, и здесь надо смотреть в сторону subprocess, например. этот же модуль позволит прибраться за собой, и завершить perl часть по окончании работы
    - если нужно запустить скрипт, и пообщаться с ним через его stdin/stdout, то смотрите на subprocess.Popen
    Ответ написан
    Комментировать
  • Почему этот код не работает, и его нельзя убить с помощью ctrl+z?

    @Zanak
    у вас косяк в коде сервера вы listen и accept потеряли.
    Попробуйте почитать вот это.
    Ответ написан
  • Легкий в установке python фреймворк?

    @Zanak
    Не очень понятно, зачем вам питон, если вы на нем не разрабатываете.
    Но обо всем по порядку:
    - язык ставится в любом случае. php, python, ruby, что-то еще, в зависимости от того, какое приложение вы разворачиваете.
    - вебсервер вам в любом случае ставить. апач, нжинкс, лайти или что - то еще, это дело личных предпочтений.
    - БД тоже ставится по определению. установка соответствующего драйвера - обязательная процедура для любого языка.
    - установка сервера приложений. это тоже общая часть для любого языка. у каждого языка, почти наверняка, есть свое, специфичное решение. для python это gunicorn, для ruby unicorn, для perl, к примеру starman или twiggy, для php это php-fpm. можно использовать пакет uwsgi, который через плагины поддерживает несколько языков, чтобы один раз разобраться с настройками и потом просто пользоваться.
    - менеджер пакетов. это, если и не общее для всех языков, достаточно типичное решение. npm для ноды, cpan для perl, composer для php, например.
    - установка песочницы. для питона это virtualenv. этот инструмент позволяет дать запускаемым приложениям необходимые пакеты, не выполняя их установку в системный каталог. каждому приложению нужные именно ему версии пакетов! питон здесь тоже не уникален. для php или ruby, например, есть аналогичные инструменты. к стати, если на сервере будет жить единственное приложение, то этот шаг можно пропустить, и все зафигачить в системный каталог.
    - и только теперь установка самого фреймворка: pip install django. дальше по инструкции развертывания из документации к фреймворку, указать базу, накатить миграции ...

    Большая часть шагов по развертыванию вашего приложения является общей для многих языков и многих фреймворков. Может стоит поучить матчасть?
    Ответ написан
    Комментировать
  • Как вызвать функцию, используя регулярные выражения?

    @Zanak
    Вопрос конечно улыбнул. :)
    Но если серьезно, то польза регекспов здесь зависит от задачи. Если имена функций вводятся явно, и список параметров везде одинаков, то и регекспы не нужны.
    Кроме предложенного решения влоб, со словарем, можно вспомнить про функции globals/locals.
    Можно предложить заглянуть в sys.modules.
    А еще можно вспомнить про либу importlib и функцию getattribute, если требуется подгружать функции из еще не импортированного модуля.
    Ответ написан
  • Какой выбрать python web framework где datasource является RESTful API?

    @Zanak
    Что есть ORM? Отображение логических или физических сущностей БД на объекты программы.
    Источник данных - это сервис. Драйвер соединения - ваш код, который отправляет запросы в чужой API и получает ответ, обрабатывая ошибки, когда они возникают. В чем собственно проблема?
    Ну да, вам придется явно закодировать объекты, которые предоставят интерфейс для взаимодействия с данными API вместо магии метапрограммирования django orm. Или простота вас и смущает?
    Оберните данные внешнего API в классы, разбив их согласно логике использования, и пользуйте любой привычный вам фреймворк. Можете даже привычные active record или repository реализовать, если в контексте задачи это оправдано.
    Ответ написан
  • Можно ли передавать ссылку на атрибут класса?

    @Zanak
    Возможно не совсем ответ на ваш вопрос, но поиск по запросу "PyQt MVC example" не поможет отцу русской демократии? :)
    Находится например такая ссылка.. Статья старенькая, но надеюсь адаптировать код все таки возможно.
    Ответ написан
    3 комментария
  • Как отследить скрытые post/get запросы?

    @Zanak
    Я бы присмотрелся к тому, что отдается и куда:
    - первое, что я начал бы искать в коде формы, это csrf токен, вставлять который сейчас считается правилом хорошего тона.
    - как формируется action формы, если зайти на страницу с отправкой сообщения и нажать "обновить". иногда целевой url формы имеет рандомный компонент, который тоже может использоваться как маркер.
    - можно ли перейти на страницу отправки сообщения по закладке в буркмарке. если можно, то следует проверить, сохраняются ли при этом сообщения после отправки. если нет, среди прочего, может проверятся и значение реферера
    - так же, я бы посмотрел, сколько полей, и скрытых и открытых есть в форме, и сколько их на самом деле передается.
    - иногда помогает заглянуть в localstorage и cookies.

    Если все это не помогло, то вам повезло встретить что-то интересное, вооружайтесь DevTools и начинайте изучать скрипты по порядку, кто грузится, в каком порядке, и что делает. Здесь хорошо помогает поиск имен js файлов в сети, чтобы отбить рассмотрение известных js пакетов.
    Ответ написан
    Комментировать
  • Flask, как вызвать метод и не дожидаясь его ответа вернуть ответ в jsonify?

    @Zanak
    Асинхрон на базе очередей редиски не вариант? Я про что - то подобное этому.
    Ответ написан
    Комментировать
  • Как вытащить нужные данные из таблицы docx?

    @Zanak
    Чтобы видеть, что именно у вас не получается, нужно видеть код. Открываю документацию, и вижу: создаем инстанс документа, передав путь до файла, доступ к существующим элементам получаем через inline_shapes, paragraphs, sections или tables, новые создаем с помощью add_* методов. Каждый элемент страницы содержит, либо коллекции вложенных элементов, либо свойство text, которое, скорее всего вам и нужно.
    В вашем случае порядок действий должен быть примерно такой:
    - читаем документ
    - перебираем таблицы (свойство tables документа), пока не найдем нужную Table (критерием соответствия может быть, например, наличие строки "№ ауд." в соответствующих ячейках первой строки, метод cell у таблицы вам в помощь)
    - перебираем строки найденных таблиц, выбирая из ячеек соответствующие данные в случае заголовка таблицы или строки с предметом
    - по мере нахождения, добавляем в результат новые данные
    - закрываем документ и показываем все найденное
    Ответ написан
    Комментировать
  • Как привязать программу к сайту?

    @Zanak
    Смотрите в сторону использования API KEY. Каждому розданному API KEY позволяете создать/привязать одного пользователя. Программа у пользователя спрашивает имя и пароль, дергает сервер для регистрации/привязки, хоть простым post-ом, хоть специальный api запилите.
    Дальнейшая судьба API KEY - на ваше усмотрение. Например, его можно использовать в процедуре восстановления пароля, как дополнительный токен авторизации.
    Ответ написан
    Комментировать
  • Асинхронное выполнение в одном скрипте на Python?

    @Zanak
    Не смотрите в сторону асинхрона. Питонячий асинхрон - это кооперативная многозадачность на одном потоке исполнения.
    Если все делать руками, то threading или multiprocessing вам в помощь.
    Можно попробовать подтянуть django+celery или flask+rq, если вариант с веб приложением приемлем.
    Ответ написан
    Комментировать
  • Как можно обходить защиты сайтов от ботов?

    @Zanak
    Задача в общем случае не имеет решения, конечно, если договорится с владельцем сайта - не вариант.
    Да, ты можешь на питоне научится подделывать заголовки запросов, распознавать капчу, можешь даже качественно строить в памяти dom и обрабатывать его js, загруженным со страниц целевого сайта, но это работает только в частных случаях. Как только появляется интерес не дать тебе утащить данные, сразу начинается гонка, один придумывает способы, как обламать халявщика, другой - как эти проверки обойти. Авита, как пример, много внимания уделила, а может и уделяет до сих пор, противостоянию с пауками, и, в моем случае, найденные решения жили от нескольких дней, до нескольких месяцев, а потом все равно отпадали.
    Если, все таки, желание не отпало, можно попробовать перестать прикидываться браузером и стать им на самом деле. Речь про написание плагинов, которые будут приглядывать за страницей и искать на ней нужные данные, собирая их в памяти на отдельной вкладке, или отправляя на твое api для сохранения. Можно попробовать поиграться со встраиванием браузера в твою программу, но я игрался только со встраиванием ишака в прогу на дельфях, да и то, очень давно.
    Ответ написан
    Комментировать
  • Как использовать "requests" рядом с "grequests"?

    @Zanak
    Обернуть отправку асинхронного запроса в функцию, если этого не сделано, и импортировать grequests локально, внутри функции.
    Ответ написан
    Комментировать
  • Как на python сделать таймер?

    @Zanak
    Еще можно как - то так:
    import signal, os
    
    def handler(signum, frame):
        print 'Signal handler called with signal', signum
        exit()
    
    signal.signal(signal.SIGALRM, handler)
    signal.alarm(5)
    
    for i in range(0, 1000000):
        print "i: %s\n" % (i)
    Ответ написан
    Комментировать
  • Библиотека aiohttp. Параллельность обработки запросов возможна?

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