• Как правильно обработать None для аргументов в argparse?

    DarkWood
    @DarkWood Автор вопроса
    longclaps, скажите, пожалуйста, вы умеете читать? А то, может, и правда нет?

    Вы понимаете значение слова "тестовый"?

    Зачем вы мне рассказываете что делает json.load? Зачем вам файлы, которые не имеют никакого значения для вопроса? Как и представленные функции, повторюсь уже в который раз.

    Код до использования аргументов может быть совершенно любым. Сути вопроса это не изменит.

    import argparse
    import sys
    
    parser = argparse.ArgumentParser()
    
    parser.add_argument('-u', '--up')
    parser.add_argument('-l', '--low')
    
    if __name__ == "__main__":
        namespace = parser.parse_args(sys.argv[1:])
        print(namespace.up.upper())

    При передаче одного аргумента всё отработает прекрасно.
    prog.py -u test
    TEST


    А если я добавлю в коде вызов второго аргумента, но передам только один, то получу ту ошибку, решение и понимание которой я пытаюсь найти.

    import argparse
    import sys
    
    parser = argparse.ArgumentParser()
    
    parser.add_argument('-u', '--up')
    parser.add_argument('-l', '--low')
    
    if __name__ == "__main__":
        namespace = parser.parse_args(sys.argv[1:])
        print(namespace.up.upper())
        print(namespace.low.lower())

    prog.py -u test
    Traceback (most recent call last):
      File "prog.py", line 12, in <module>
        print(namespace.low.lower())
    AttributeError: 'NoneType' object has no attribute 'lower'

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

    DarkWood
    @DarkWood Автор вопроса
    longclaps, да, читать - не ваш конек. Вы опять зачем-то пишите мне про словари. И зачем-то переписываете функции, которые несут в моем вопросе минимум смысловой нагрузки. Тем временем, не вызванный аргумент по-прежнему будет отдавать ошибку обработки None. Например,

    prog.py --add qwe=rty
    Traceback (most recent call last):
      File "E:\Useful\python_work\my_projects\video_watcher\argparse_test.py", line 12, in <module>
        for k in args.check:
    TypeError: 'NoneType' object is not iterable


    Так что я бы поспорил с тем кому "трудно втыкать в несколько вещей".
  • Как правильно обработать None для аргументов в argparse?

    DarkWood
    @DarkWood Автор вопроса
    Код выше, описание выше, вопрос выше. Пояснения в этим комментариях и к ответу ниже.

    Не ищите здесь скрытых камней. Я хочу понять ровно то, что написал: как оперировать несколькими аргументами в argparse.
  • Как правильно обработать None для аргументов в argparse?

    DarkWood
    @DarkWood Автор вопроса
    Спасибо за ответ. Но приведенный пример именно тестовый, на котором я пытался понять как работают несколько аргументов в argparse. В реальном проекте аргументов будет около десятка. Соответственно, как я понимаю, мне нужно будет проверять какие были переданы? Вы написали "заполнение параметров в namespace" - это довольно точно описывает то, что я хочу понять. Если аргумент не вызывался и имеет None в namespace, то я не получаю никаких ошибок, а вызванные спокойно отрабатывают.
  • Как правильно обработать None для аргументов в argparse?

    DarkWood
    @DarkWood Автор вопроса
    Я специализируюсь на Adobe Illustrator и мне часто тоже приходится читать кучу всякого странного в вопросах пользователей. Включая идиотизм. Для ответа я вижу три варианта: корректно объяснить в чем ошибка помимо основного вопроса, если таковая была; пропустить и ответить по существу; написать подобное вашему. Можно еще в Google отправить, если вещь совсем ясельная.

    Я тоже иногда отвечаю как вы сейчас. Но количество идиотизма это не уменьшает. Потому чаще всё-таки пропускаю мимо. И прошу вас понять, что по теме Python он тоже не уменьшиться, что бы вы ни писали. Учитывая, что язык доступен из каждого утюга - количество идиотизма в обозримом будущем будет только расти.

    Ну и вернемся к моему вопросу. Раз вы спрашиваете в чем суть, что, возможно, не потрудились прочитать его описание. Вопрос заключается не в работе со словарями, а в правильной организации взаимодействия с несколькими аргументами командной строки, когда был вызван только один из них, а другие выдают невозможность обработки значения None. Я честно написал, что не понимаю как это сделать.
  • Как правильно обработать None для аргументов в argparse?

    DarkWood
    @DarkWood Автор вопроса
    longclaps,
    Во-первых, какое отношение ваш комментарий имеет к сути?
    Во-вторых, что вас не устраивает в процитированном куске кода?
  • Почему не работает выравнивание в фигуре?

    DarkWood
    @DarkWood
    Хм... Честно говоря, не знаю с чем это может быть связано.
  • Почему не работает выравнивание в фигуре?

    DarkWood
    @DarkWood
    Фигура векторная? Как выделена?
  • Как соединить фигуры?

    DarkWood
    @DarkWood
    Забыл добавить: если будете делать через "умные" направляющие, то отключите перед этим любые другие привязки (к сетке, пикселям и прочему) - они имеют более высокий приоритет.
  • Как соединить фигуры?

    DarkWood
    @DarkWood
    Нажмите сочетание Ctrl+Y и посмотрите как у вас контуры совмещены. Подозреваю, что никак, если указанные действие не приносят результата. Совмещение должно быть точным. Сделать его можно либо через Smart Guides (Ctrl+U) либо через панель Align.
  • Как поставить направляющую при выделеном тексте?

    DarkWood
    @DarkWood
    Прошу прощения. Хоть вы и показали наглядно, но не совсем верно понял вопрос.
    Ответ есть ниже, но если вы хотите автоматизации, то в Photoshop я такой не знаю. Знаю в Illustrator. Если понадобится - напишите.
  • Как установить Grab на Windows 10 (Python 3.7)?

    DarkWood
    @DarkWood
    Библиотека же была установлена не через pip. Вот он и не может ее удалить. Честно говоря, тут не подскажу как быть.
  • Как установить Grab на Windows 10 (Python 3.7)?

    DarkWood
    @DarkWood
    Роман, в документации написано не "не поддерживается", а "может работать нестабильно":

    Do not use the recent version of pycurl (7.43.0 at the moment). This version fails randomly on windows platform.


    У меня установлено:
    python 3.7.2
    grab 0.6.41
    pycurl 7.43.1

    Конечно, выборка совсем не репрезентативная, но работает хорошо. Парсил форум на 3+ миллиона ID пользователей.
  • Как разные фото (иконки) поместить на один и тот же фон?

    DarkWood
    @DarkWood
    Уточните следующие моменты:

    Как я понимаю, размер фона должен остаться неизменным?
    Что это вообще за фон? Можете показать?
  • Из чего собрать игровой пк за 30-40 тысяч рублей?

    DarkWood
    @DarkWood
    По поводу проводов подсказать не могу - я их не вижу. Хотя в непосредственной близости от видеокарты разъемов под провода на вашей материнской плате вообще нет. Разве что вы вставляете ее в нижний слот. Но зачем?

    Выбранный SSD вставляется в разъем M2 и к SATA, конечно, не подойдет. Разъем M2 у вас находится ниже первого слота PCI Express x16. Если хотите поменять SSD на обычный - меняйте. В Ситилинк на это доступно всего 7 дней. Собственно, я уже писал выше, что выбранное сочетание форм-фактора и интерфейса - не лучшее, потому я бы поменял.
  • Из чего собрать игровой пк за 30-40 тысяч рублей?

    DarkWood
    @DarkWood
    Единственная претензия у меня к блоку питания. Вместо свистоперделок лучше вложится в качественную начинку. И SSD в форм-факторе M2, но с интерфейсом SATA - на мой взгляд лишнее. Обычный форм-фактор справится не хуже, а соответствующий слот лучше оставить для NVMe.

    Надеюсь, что планок оперативки две. Что до частоты - вы всегда можете ее разогнать.

    В остальном - что взяли, то взяли. Правда, очевидно что первоначальный бюджет превышен явно не на 5000.
  • Из чего собрать игровой пк за 30-40 тысяч рублей?

    DarkWood
    @DarkWood
    Ах да, еще в указанной вами сборке нет SSD. На мой взгляд первоначально взять именно его, среднего объема, которого хватит не только на ОС (как, собственно, я и предложил). А уж жесткие диски пока доступны в любой удобный момент.
  • Из чего собрать игровой пк за 30-40 тысяч рублей?

    DarkWood
    @DarkWood
    Предлагаемая вами сборка основана на младшем 4-ядерном Intel. Моя - на 6-ядерном 12-поточном Ryzen среднего сегмента. В моем городе боксовый Intel i3 8100 стоит 10000. А указанный Ryzen всего на 800 рублей дороже. Но разница в производительности между ними будет заметно больше. Я думаю, понятно в чью сторону. Также в этой сборке берут 1050 Ti. Ну вот никак она не стоит того. Возьмите хотя бы 1650.

    Скоростная память на Intel поддерживается только топовыми чипсетами z370 и z390. Не перепутайте с x370 - это AMD. Материнские платы с этими чипсетами в бюджетном компьютере, на мой взгляд, смысла не имеют.

    Для AMD всё проще - ограничения есть только на младшем чипсете a320. Частота оперативной памяти, указываемая в характеристиках, является официально поддерживаемой процессором. По факту - можно больше. Зайдя в BIOS, вы увидите в соответствующем разделе значения вплоть до 4000+ мегагерц. Но фактическая частота зависит от использованных чипом памяти. И, если вы гонитесь за хорошей скоростью, то основой является именно серия чипов, а не производитель самой ОЗУ. Наиболее успешными чипами на рынке памяти являются Samsung b-die. Список конкретных моделей планок с ними можно найти в интернете, если вы этого очень хотите.

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

    Ну и у материнских плат и видеокарт нет никаких вопросов по совместимости. Даже если вы возьмете новейшую плату на x570 с PCI-E 4.0, то сей разъем имеет обратную совместимость. А будущие видеокарты на PCI-E 4.0 будут прекрасно работать в третьей версии, пусть и на чуть меньшей скорости.