Ответы пользователя по тегу Python
  • С помощью каких приложений объяснить ребенку (9 лет) python?

    neatsoft
    @neatsoft
    Life is too short for bad software
    1. Установить на планшет ScratchJr, объяснить базовые принципы
    2. Показать Scratch, предложить выполнить в нем несколько заданий умеренной сложности
    3. Вместе написать простую игру на Pygame, например, Whack a Mole
    4. Вместе освоить управление Minecraft с помощью Python на Raspberry Pi
    5. Показать JavaScript-HTML-CSS и Developer Tools в браузере
    6. Рассказать про нативные приложения для мобильных платформ
    7. Рассказать про фреймворки (например, Django и Vue), базы данных, сетевое взаимодействие
    8. Построить и запрограммировать модели из LEGO Mindstorms EV3 (он "огороженный", тормознутый, устаревший, но детям по прежнему нравится)
    9. Рассказать про микроконтроллеры, вместе собрать что-нибудь с помощью Амперка Матрешка или Амперка Йодо
    При потере интереса на любом из этапов оставить ребенка в покое
    Ответ написан
    Комментировать
  • Программа в фоне на Python?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Для таких задач есть специальный инструмент - Celery.

    Под windows запустить можно, но не нужно. Если нет возможности использовать Linux в качестве основной рабочей системы, то стоит хотя бы виртуальную машину создать, т.к. паритет разработки/работы приложения - это важно.

    upd. Почему Celery лучше чем планировщик? Фоновое выполнение - это не такая тривиальная задача, как может показаться на первый взгляд, т.к. существуют граничные условия:
    - Что необходимо делать, если процесс по каким-то причинам не был запущен по расписанию, или завершился аварийно? Нужно ли запускать его повторно? (at least once)
    - Важна ли очередность выполнения?
    - Можно ли параллельно запускать ещё одну задачу, если предыдущая не завершилась?
    - Как мониторить выполнение фоновых задач?
    - Как собирать и хранить логи?
    Celery - хорошо протестированный, используемый во множестве проектов, production ready инструмент. Единожды изучив, его можно использовать для задач любой сложности.
    Ответ написан
    Комментировать
  • Как сравнить два файла в python?

    neatsoft
    @neatsoft
    Life is too short for bad software
    INPUT_FILENAME = 'file1'
    BLACKLIST_FILENAME = 'file2'
    OUTPUT_FILENAME = 'file3'
    
    with open(BLACKLIST_FILENAME) as f:
        blacklist = f.readlines()
    
    prev_line = None
    with open(OUTPUT_FILENAME, 'w') as output_file:
        with open(INPUT_FILENAME) as input_file:
            for line in input_file:
                if line in blacklist:
                    prev_line = None
                else:
                    if prev_line is not None:
                        output_file.write(prev_line)
                    prev_line = line
            if prev_line is not None:
                output_file.write(prev_line)
    Ответ написан
    3 комментария
  • Не удается отправить файл на ftp сервер, в чем может быть причина?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Видно что ошибка возникает при вызове FTP.connect. Учитывая что библиотека FTP используется во многих проектах, и c подобными проблемами больше никто не сталкивается, рискну предположить, что неправильно заданы параметры - адрес и порт. Для их проверки удобно использовать интерактивный режим Python.

    Кроме того, исходя из личного опыта, советую явно указывать таймаут:
    FTP_TIMEOUT = 10 # seconds
    ftp.connect(host, port, FTP_TIMEOUT)


    задать рабочий каталог:
    ftp.cwd(path)

    и обернуть вызов библиотечных функций в try-except блоки:
    try:
        ftp.connect(...)
        ftp.login(...)
        ftp.cwd(...)
    except Exception as e:
        ...
    
    ...
    
    try:
        ftp.storbinary(f'STOR {filename}', f)
    except Exception as e:
        ...
    Ответ написан
  • Какие есть приемы удобной вставки данных в MySQL с помощью Python?

    neatsoft
    @neatsoft
    Life is too short for bad software
    1. Django ORM
    2. SQLAlchemy
    ORM не избавляет от необходимости изучения принципов работы реляционных баз данных, и понимания того, в какие SQL запросы разворачиваются те или иные конструкции, но позволяет избежать множества типичных ошибок начинающих разработчиков (типа валидации данных), и резко сокращает количество рутины.
    Советую присмотреться к Django, т.к. вместе с неплохой ORM, в ней "из коробки" есть очень удобные миграции данных.
    Ответ написан
    Комментировать
  • Как вы делаете транслитерацию текста в под url?

    neatsoft
    @neatsoft
    Life is too short for bad software
    pip install python-slugify

    >>> from slugify import slugify
    >>> slugify('Тестовый набор')
    'testovyi-nabor'
    Ответ написан
    Комментировать
  • Как спроектировать веб-интерфейс управления процессами?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Django, celery, celery beat и/или Django Channels. Скрипт будет исполняться в отдельном воркере.
    Для очень простых случаев иногда подходит Django Background Tasks или cron + management commands, но лучше сразу выбрать одно из "взрослых" решений.
    Ответ написан
    3 комментария