• Как вызвать функцию, название которой записано в переменной?

    Vindicar
    @Vindicar
    RTFM!
    Правильное решение - иметь словарь функций.
    funcs = {
        'test': test
    }
    
    cmd = input('Введите команду: ')
    func = funcs.get(cmd, None)
    if func is None:
        print(f'неизвеcтная команда {cmd}')
    else:
        try:
            result = func()
        except Exception as err:
            print("Ошибка:", err)
        else:
            print("Результат:", result)
    Ответ написан
    1 комментарий
  • Как сделать разную длину ряда inline кнопок?

    @Everything_is_bad
    ты доки собираешься сначала читать, а не набегать сюда с простейшими вопросами?
    https://docs.aiogram.dev/en/latest/utils/keyboard....
    Ответ написан
    Комментировать
  • Как вывести общий объем свободного и занятого дискового пространства?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    есть замечательная утилита lsblk
    например, вывести информацию по всем смонтированным FS(файловым системам) в виде - имя, доступный размер, используемый размер и процент от использования
    $ lsblk -lo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
    NAME      FSAVAIL FSUSED FSUSE%
    nvme1n1p1    423M    88M    17%
    nvme1n1p2  423,2G    29G     6%
    nvme0n1p2  360,2G  73,3G    16%

    awk здесь используется для отсечения не смонтированных ФС и самих дисков у которых естественно будет отсутствовать доступный размер.
    Если нужен общий размер файловой системы то добавьте параметр FSSIZE

    если нужно без шапки то используй ключ -n
    $ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% | awk 'NF>1'
    nvme1n1p1    423M    88M    17%
    nvme1n1p2  423,2G    29G     6%
    nvme0n1p2  360,2G  73,3G    16%

    если нужно по конкретной ФС то просто указываем её
    $ lsblk -nlo NAME,FSAVAIL,FSUSED,FSUSE\% /dev/nvme1n1p2
    nvme1n1p2  423,2G    29G     6%

    если нужна конкретная цифра то оставляем тока нужный параметр
    $ lsblk -no FSUSED /dev/nvme1n1p2
       29G

    при желании можно получить данные через json и после нужным образом обработать, например:
    $ lsblk -Jo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
    29G

    если нужно в байтах, то используйте ключ -b
    $ lsblk -Jbo FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[].fsused'
    31178240000


    еще как пример, для файловой системы nvme1n1p2 отобразим в форматированном виде информацию по свободному и занятому пространству:
    $ lsblk -Jo FSAVAIL,FSUSED /dev/nvme1n1p2 | jq -r '.blockdevices[] | "Всего занято:\t\(.fsused)\nВсего свободно
    :\t\(.fsavail)"'
    Всего занято:	29G
    Всего свободно:	423,2G


    п.с.
    если нужна обобщённая информация сразу по всему диску то наверное проще будет использовать smartctl
    sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято:\t\(.utilization.bytes)\nВсего свободно:\t\(.capacity.bytes - .utilization.bytes)"'
    Всего занято:	88322768896
    Всего свободно:	411785093120

    правда это скорее всего будет с учетом размера метаданных самих файловых систем расположенных на диске, что будет не так интересно, хотя для быстрой оценки диска сойдёт.
    (здесь вывод json под nvme, для других видов дисков скорее всего нужно будет подправить)

    и да, для преобразования размеров довольно удобно использовать утилиту numfmt
    $ sudo smartctl -ja /dev/nvme0n1 | jq -r '.nvme_namespaces[] | "Всего занято: \(.utilization.bytes)\nВсего свободно: \(.capacity.bytes - .utilization.bytes)"' | numfmt --to=iec --field 3 --padding=1 --format %.1f
    Всего занято: 82,3G
    Всего свободно: 383,6G
    Ответ написан
    1 комментарий
  • Как вновь устроиться на работу после года перерыва?

    Jacen11
    @Jacen11
    дальше скрининга дело не заходило
    значит нашли тех кто лучше, значит улучшать навыки

    по поводу резюме
    являюсь опытным разработчиком

    недавно я изучил паттерны и подходы к проектированию микросервисных архитектур

    Возраст: 19 лет

    От 170 000 ₽

    Местоположение: Россия, Самара

    все вместе это просто лютая дичь и и просто ржачь. В Москве после 6 лет вышки на программиста за 50к у нас был хороший результат, а тут такое. Опытный разраб недавно изучил патерны? А который давно их знает бог получается? Кстати "микросервисные архитектуры" на самом деле микросервисная архитектура, думаю и на собесах проскакивают такие мелкие косяки, которые выдают "опыт". Может и так и так можно говорить, но говорят все таки по другому

    Приобретённые навыки:
    какой то странный раздел. Это и есть задачи и чем на проекте занимался

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

    Vindicar
    @Vindicar
    RTFM!
    Ну так у тебя библиотека для работы с discord не установлена. Почитай в документации, как её установить.
    Мне лениво
    В командной строке pip install discord.py. Это если ты используешь именно discord.py, а не один из его клонов.
    Ответ написан
    Комментировать
  • Как исправить AttributeError: 'NoneType' object has no attribute 'find_all'?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    1. Нужно приводить сообщение об ошибке полностью. Всё целиком что пишется в терминал. Там исчерпывающая информация о том, что конкретно и где пошло не так.
    2. Если вы не способны читать сообщения об ошибках, то вам надо учиться на более простых примерах. Сейчас же ваша проблема выглядит так, что вы совершенно не умея программировать и не зная основ пытаетесь с помощью данного ресурса решить свою какую-то задачу.
    3. У вас в коде только два места. где происходит вызов метода find_all. В котором конкретно ваша проблема указано в подробном сообщении об ошибке, которое вы не потрудились привести.
    4. 'NoneType' object has no attribute 'find_all' означает, что вы пытаетесь вызвать метод у объекта, у которого нет этого метода. Видно даже у какого объекта - у Null.
    5. Если вам этих намёков не достаточно, то вам следует взять учебник по питону и начинать учиться с простого. Или обратитесь к фрилансерам за помощью.
    Ответ написан
    Комментировать
  • Как отправить команду в Telegram чтобы он закрылся?

    Нет.
    Ответ написан
    Комментировать
  • Что нужно знать junior php backend разработчику?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что нужно знать junior php backend разработчику?

    То, что указано у заказчика в ТЗ или в вакансии.
    Всем найденным ответам на этом ресурсе - больше 3 лет, возможно уже ситуация заметно изменилась.

    Не изменилась.
    помогите пожалуйста сориентироваться и понять с чего начать и в каком порядке изучать.

    С формулирования более конкретных вопросов.
    Ответ написан
    Комментировать
  • Что делать если про скачивании aiogram, выходить данная команда?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Что делать если про скачивании aiogram, выходить данная команда?

    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-buil...

    Наверное стоит прочитать ошибку?

    На винде отсутствует Microsoft Visual C++, качать здесь https://visualstudio.microsoft.com/ru/visual-cpp-b....
    Ответ написан
    5 комментариев
  • Не правильная проверка ячейки таблицы через цикл, почему не записывается переменная?

    Vindicar
    @Vindicar
    RTFM!
    Ты уверен? Как насчёт явно задать порядок выборки нужных тебе столбцов в select?
    Что-то в духе SELECT id, name, chat_id FROM users. Названия столбцов укажи свои, и только используемые в данном коде.

    Далее, с БД так не работают. Ты выбираешь все строки, а потом вручную ищешь совпадение - это глупо.
    Лучше попроси БД найти нужные тебе строки.
    cur.execute('SELECT id, name FROM users WHERE chat_id = ?', (call.message.chat.id,))


    К слову, что ты подразумеваешь с под "третья"? Индекс 3? Или "третья с начала" (индекс 2)?
    Ответ написан
    Комментировать
  • Как ответить на сообщение в боте телеграма спустя сутки(aiogram 2.5.2)?

    @nozzy
    Symfony, Laravel, SQL
    Ты все правильно придумал, без sleep здесь никак не обойтись, сделай так (псевдокод):
    bot.sendMessage('Message 1');
    //ждем день (86400 секунд)
    sleep(60*60*24); 
    bot.sendMessage('Message 2');
    //ждем еще день
    sleep(60*60*24); 
    bot.sendMessage('Message 3');

    Не благодари.
    Ответ написан
    4 комментария
  • Почему возникает ошибка AttributeError: 'NoneType' object has no attribute 'write'?

    @Dementor
    программист, архитектор, аналитик
    1. При чем тут Java?
    2. Зачем тут HTML и CSS?
    3. На днях тоже при отладке питоновского скрипта получил ошибку AttributeError: 'NoneType' object has no attribute - не поверишь, у меня функция вместо нужного объекта возвращала NoneType и у него естественно не было никаких атрибутов, что при попытке обратится к ним вызывало ошибку. Помогает проверка типа или Try-Except

    Загуглил, что eel - это электрон. Тогда с описания ошибки очевидно, что при запуске в пайчарме (или где там отлаживаете) скрипт и веб-файлы находятся в одной директории, а после компиляции он их не видит, что говорит о разних рабочих директориях. Или передавайте на вход исполняемому файлу рабочую директорию, или указывайте полный путь, а не "????/main.html"
    Ответ написан
    2 комментария
  • Как правильно хранить изображения в SQL и как правильно работать с ними в WPF проекте?

    Идеальное решение без лишних рассуждений

    Картинки - в S3, а перед S3 поставить CDN, чтобы сильно S3 не нагружать.
    В центральную базу данных на сервере - только идентификаторы картинок.

    Клиент (на WPF) будет обращаться к какому-то приложению, которое написано на ASP NET Core, а оно, в свою очередь, будет идти в центральную БД за всякой инфой.

    Опционально - клиент будет идти в CDN за картинками.
    Сами картинки потом пусть кэшируются в ФС, чтобы не нужно было идти за ними повторно.
    Данные о модах тоже можно кэшировать, но уже в sqlite - это полезно будет, пока нет интернета, или пока актуальный список модов загружается.



    Да, единственный хороший вариант хранить картинки в базе - это не хранить картинки в базе, а хранить лишь пути или идентификаторы картинок.

    Главный минус картинок в ФС - это то что они будут привязаны к одному серверу. Лучше хранить картинки в другой системе (S3 или CDN) и хранить в базе их идентификаторы, чтобы потом клиент мог сам их скачать, если это необходимо. Так раздача картинок не будет привязана к основному серверу.

    А клиент пусть их кэширует также у себя на диске.

    В будущем я хотел бы попробовать сделать так, чтобы база была на каком-то сервере, чтобы многие могли пользоваться приложением, но не думаю, что это будет нормально работать, да и вообще не красиво( Заранее спасибо.

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

    Ну и клиент на WPF не должен напрямую подключаться к MS SQL.
    MS SQL должен находится где-то на сервере и спрятан за каким-то другим web-сервером (который будет написан с использованием ASP NET Core например), который будет уже отвечать за всякую логику.
    Если тебе нужна локальная база данных на клиенте (для кэша например), то лучше использовать sqlite.
    Ответ написан
    2 комментария
  • Как в цикле For передать два значенния?

    @Everything_is_bad
    zip, но лучше начать читать учебник, если такое в ступор вводит.
    Ответ написан
    Комментировать
  • Насколько приемлема такая проверка на четность (делимость) в Python?

    febday
    @febday
    if a % 2:
    Это тоже самое, что и
    if a % 2 == 1:
    Ну или это
    if a % 2 != 0:

    Поскольку 1 в булево значениях это True, а первый вид условия отвечает всегда на True, как и другие в принципе

    Поэтому решать лишь вам как записывать. В любом из вариантов это читабельно
    Ответ написан
    Комментировать
  • Как исправить проблему импорта библиотеки python-valve?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Библиотека valve поддерживает максимум python 3.7, у вас 3.12. Библиотека не обновлялась около 4 лет. Закопайте стюардессу.
    Ответ написан
    Комментировать
  • Какая сфера в IT/яп лучше подходят для работы параллельно с учебой?

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

    @maksam07
    Можно ли

    Можно. Все что видно в браузере - можно. А иногда и немного того, что не видно.
    Ответ написан
    Комментировать
  • При команде `!mine` алмазы 0, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Рекомендую выучить язык, прежде чем писать ботов.
    Посмотри на свой код (выделено мной):

    elif user_data[5] == '<:939223290105454632:1164940159050059786>':
    ...
    elif user_data[5] == '<:939195860317773856:1164153649296048148>':
    ...
    elif user_data[5] == '<:939223290105454632:1164940159050059786>': # Добавлено условие для железной кирки
    ...

    У тебя уже есть условие для железной кирки. Оно отработает первым, и в дальнейшие ветки elif управление просто не перейдёт. Более простой пример, иллюстрирующий твою ошибку:
    x = 1
    
    if x == 0:
      print('Ноль!')
    elif x == 1:
      print('Один!')
    elif x == 2:
      print('Два!')
    elif x == 1:
      print('Раз!')

    Код выведет "Один!" а не "Раз!".
    Единственный способ добиться нужного поведения - исправить уже существующую ветку.
    x = 1
    
    if x == 0:
      print('Ноль!')
    elif x == 1:
      print('Раз!')
    elif x == 2:
      print('Два!')


    В коде вообще много спорных решений, но про них лучше отдельно поговорить.
    Ответ написан
    1 комментарий
  • Постоянно вылазит ошибка NoneType:None в чём дело?

    Vindicar
    @Vindicar
    RTFM!
    А что, по твоему, ты пытаешься сделать?
    Эта функция выводит информацию о текущем обрабатываемом исключении. А у тебя в коде исключения не выбрасываются.
    По факту, эту функцию имеет смысл использовать только когда обрабатываешь исключение, т.е. внутри блока except.
    Ответ написан
    Комментировать