• Python как быстро получить число элементов архива tar.gz?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Не получится из-за специфики устройства tar-файла. Пока весь не прочитаешь, не узнаешь сколько в нём каталогов. Это потоковый формат, а тут он ещё и сжат сверху gzip'ом.

    Это как посчитать быстро сколько вещей в чемодане. Пока по одной не вытащишь и каждую не посчитаешь - не узнаешь.
    У других архиваторов, например zip, есть индексная табличка. Это как бумажка с перечнем всех вещей в чемодане. Она лежит прямо под крышкой и её можно достать первой.

    Придётся как-то обходить эту проблему. Например использовать другой формат архива, или еред архивацией делать отдельный файл с перечнем всех файлов, и его класть в архив первым. А может быть вам и не нужно на самом деле количество элементов в архиве,а того, что вы этим количеством хотите добиться можно достичь иначе.
    Ответ написан
    2 комментария
  • Почему код из книги Эрика Метиза "Изучаем Python" не работает?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    В английской версии всё ок между прочим.
    eng
    645355141213d133294531.jpeg


    При этом чуть ниже написано что определение функции модифицировали, добавив age, просто в самом фрагменте кода этого нет почему-то:
    В определение функции добавляется новый необязательный параметр age, которому присваивается специальное значение по умолчанию None


    Естественно, правильный код будет
    def build_person(first_name, last_name, age=None):
        """Возвращает словарь с информацией о человеке."""
        person = {'first': first_name, 'last': last_name}
        if age:
            person['age'] = age
        return person
    musician = build_person('jimi', 'hendrix', age=27)
    print(musician)
    Ответ написан
    4 комментария
  • Как при запуске сервера, запустить CRON с нужным окружением python?

    Procrastinationator
    @Procrastinationator
    Я не уверен на 100%, но вроде виртуалку нужно запускать как-то так: /home/my_project/venv/bin/activate
    Но это я тыкнул в небо. По-хорошему, увидеть что выдаёт ваша консоль.

    Если дело в этом, рекомендую создать bash скрипт:
    #!/bin/bash
    
    # Переход в директорию проекта
    cd /home/my_project
    
    # Активация виртуалки
    source /home/my_project/venv/bin/activate
    
    # Выполнить скрипт Python
    python /home/my_project/test.py

    И добавь ему права на выполнение: $ chmod +x run_cron.sh
    Потом пропиши его в CRON:
    @reboot /path/to/your/run_cron.sh
    Ответ написан
    Комментировать
  • Стоит ли мне знать как работает cmd для Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Командная строка нужна когда у тебя есть задачи интеграции твоего кода с чем-то другим.
    Также полезно знать ее для задач админства и девопс-освства.

    Обычно знания работы с шеллом - (не только cmd но и bash) это большой плюс к другим
    скилам и к более широкому пониманию того как работает операционная система. Файлы.
    Named Pipes. Коды ошибок и состояний. Логгирование. Анализ крашей.
    Ответ написан
    1 комментарий
  • Стоит ли мне знать как работает cmd для Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Если вы хотите водить машну, вы должны понимать хотя бы базовые основы её технического устройства.
    Потом вы прибежите на этот ресурс со своим непониманием почему что-то работает не так, как вы ожидаете.

    Безусловно нужно понимать как в общих чертах работает операционная система, понимать концепцию процессов, переменных среды окружения, командную строку, что такое паремтры командной строки и т.д.

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

    @Drno
    в чем вопрос то? перечислить ПО надо? так то это скорее на ТЗ для заказчика похоже))

    роутер - pfSense
    свитчи - микротик
    Управление юзерами - Ubuntu server + ldap (либо готовый "комбайн" Zentyal)
    на ПК для юзеров - Linux Mint
    Видеонаблюдение - сервер на Zoneminder + POE свитчи (либо платно Hikvision \ Trassir)
    СКУД - IronLogic
    Мониторинг - Zabbix
    Ответ написан
    5 комментариев
  • Как оптимизировать использование Python-ом ОЗУ?

    fenrir1121
    @fenrir1121
    Начни с документации
    Aiogram 3 набирает обороты и хапает себе ОЗУ
    Начните с доказательства этого утверждения.
    Как минимум мой опыт свидетельствует об обратном: десяток запущенных ботов потребляют на сервере один и тот же объем ОЗУ с аптаймом в несколько месяцев.

    Очистка памяти в Python выполняется автоматически путем подсчета ссылок на объекты и сборкой мусора (для циклических ссылок). Есть интерфейс для взаимодействия со сборщиком, но он не будет вам полезен. Запустите бот через профайлер вроде memray и ищите с чем связана проблема.
    Ответ написан
    Комментировать
  • Как сделать рандомное число без повторений при вызове функции?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Странные ответы тут приводят.
    import random
    lst = list(range(1, 5+1))
    random.shuffle(lst)

    Так у вас в списке будет случайно перемешанная последовательность.
    Но у вас есть требование (не знаю насколько оно осозанное), чтобы это была непременно функция.
    Надо понимать, что такая функция не будет чистой. Она должна выдать конечное количество разных значений и её придётся вернуть исключение, если от нее потребуют больше очерендым вызовом. Сделать это можно с помощью генератора.
    def make_shuffled_gen(a, b):
        lst = list(range(a, b + 1))
        random.shuffle(lst)
        yield from lst
    
    shuffled_getter = make_shuffled_gen(1, 5).__next__


    Ну или одним выстрелом:
    def make_shuffled_getter(a, b):
        lst = list(range(a, b + 1))
        random.shuffle(lst)
        return iter(lst).__next__
    
    shuffled_getter = make_shuffled_getter(1, 5)
    Ответ написан
    3 комментария
  • Логика структуры мультиязычного сайта?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    А давйте без "воможно", "наверное" и "я так думаю". Есть четкие правила, которые рекомендуют поисковые системы, и в данном случае программист абсолютно верно вывел все языки в отдельные урл: https://developers.google.com/search/docs/specialt...
    Ответ написан
    3 комментария
  • Почему не работает OWM?

    @vladislavlisitsyn Автор вопроса
    Решение:
    Заменить observation = mgr.weather_at_places(city) на observation = mgr.weather_at_place(city)
    Ответ написан
    Комментировать
  • Как изменить вводимые данные пользователем на звёздочки?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Можно использовать библиотеку keyboard
    import keyboard
    
    secret_symbol = '*' # Символ для замены
    
    def masked_input(prompt):
        print(prompt, end='', flush=True)
        input_str = ''
        
        while True:
            event = keyboard.read_event(suppress=True)
            key = event.name
            
            if event.event_type == 'down':
                if key == 'enter':
                    print()
                    break
                elif key == 'backspace' and len(input_str) > 0:
                    input_str = input_str[:-1]
                    print('\b \b', end='', flush=True)
                elif len(key) == 1:
                    input_str += key
                    print(secret_symbol, end='', flush=True)
        
        return input_str
    
    password = masked_input("Введите пароль: ")
    print(f"Введенный пароль: {password}")
    Ответ написан
    Комментировать
  • При преобразовании текста в кодировку windows-1251 не корректно меняется "Ё". Что делать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала, ваша регулярка не обнаруживает буквы Ё и ё, поскольку они находятся в блоках расширения кириллицы, за пределами диапазона А-я. Правильно будет /a-яё/i
    Ну и, возможно, следует учесть, что Ё !== Ё !== Ë.
    Ответ написан
    1 комментарий
  • Как сделать мини консольную игру?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Рисуете на бумажке граф состояний вашей игры.
    Каждый узел этого графа - это вопрос. Из узла выходят стрелочки в другие узлы. Каждая стрелочка - это вариант ответа и реакция на нее игры.
    Так вы опишете граф состояний конечного автомата.
    Теперь этот граф вам нужно оформить для использования в программе.
    Обычно граф описывают с помощью матрицы состояний. Это матрица N*N, где N-это количество состояний игры. Каждая ячейка с координатами (i, j) такой матрицы определяет переход из i-ого в j-ое состояние. Если в ячейке ноль, то перехода нет, а если 1, то есть.
    Обычно в такой матрице нулей гораздо больше чем единиц, поэтому такую матрицу кодируют в виде перечисления всех стрелочек-переходов из исходного в следующее состояние.
    В исходном коде или в файле описываете N состояний, для каждого состояния перечисляете все варианты ответов, для каждого варианта ответа указываете какое состояние будет при его выборе.
    Такую структуру можно описать в виде json или yaml-файла, либо прямо в коде средствми выбранного языка программирования (словарь, или функция с switch-case, или много if-ов).
    Программа будет представлять цикл и переменную со ссылкой на текущее состояние.
    В цикле печатаете вопрос, который соответствует текущему состоянию и варианты ответов на него, запрашиваете ответ у пользователя, в зависимости от ответа присваете в качестве текущего новое состояние.

    Если вам что-то не понятно в этом тексте, то нет смысла задавать дополнительные вопросы, в этом случае вы гарантированно не справитесь с заданием. Следует искать информацию о ненакомых терминах в интернете.
    Удачи.
    Ответ написан
    Комментировать
  • Почему не получается авторизироваться через requests?

    Vindicar
    @Vindicar
    RTFM!
    Потому что надо исходный код целевой страницы почитать, ну и разобраться, как пользоваться инструментами разработчика в браузере, чтобы понять, какие запросы выполняются.
    https://edu.tatar.ru/login - это URL для получения страницы с формой входа. А вот сама форма отправляет данные на URL https://edu.tatar.ru/logon. Именно по этому адресу я бы и делал запрос.
    Ответ написан
    Комментировать
  • Почему тормозит PostgreSQL?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Почему вы план смотрите не для того запроса, который тормозит? Из очевидного - отсутствие индекса на поле, используемое для сортировки.
    Ответ написан
    3 комментария
  • Как создать свой JSON и получить доступ к значению по ключу?

    @Bright144
    Так в str не возможно получить доступ по ключи.
    Это не правильно:
    import json
    answer = {
            "id": "12",
            "status": "Готов",
            "url": "vk.com"
        }
    answer = json.dumps(answer, ensure_ascii=False).encode('utf-8')     #здесь ты переобразуешь str на bytes
    answer = str(answer.decode('utf-8'))                                #здесь обратно в str
    
    print(type(answer))                                                 #вот тип который ты хочешь получить доступ по ключи

    Вот это правильно:
    import json
    answer = {
            "id": "12",
            "status": "Готов",
            "url": "vk.com"
        }
    answer = json.dumps(answer, ensure_ascii=False)
    answer = json.loads(answer)                         #здесь ты переобразуешь json на данный
    
    print(answer['id'])                                 #получаем данные по ключи
    Ответ написан
    Комментировать
  • Какой pet проект создать, чтобы выделиться?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Pet проект это не тестовый проект для портфолио.
    Пет проект делается для себя, а потом по случаю добавляется в портфолио, а не создается исключительно для того, чтобы положить его в портфолио.

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

    Griboks
    @Griboks
    Создайте pet-проект, который приносит вам доход.
    Ответ написан
    9 комментариев
  • Какой pet проект создать, чтобы выделиться?

    @rPman
    На правах шутки - используй то что сейчас на слуху, большие нейронные сети, языковые модели и т.п. Тем более там как раз питон.

    Если же говорить про что могло бы быть максимально эффективным - запили что то из области своего будущего работодателя.
    Ответ написан
    Комментировать
  • В чем ошибка почему пишет про синтакс?

    Где отступы? Где после управляющей конструкции (if) двоеточие?
    Ответ написан
    3 комментария