Когда вы даете функции набор необходимых аргументов или присваиваете argv, код требует, чтобы вы указали правильное количество аргументов или он продолжает выдавать «ожидаемое количество вещей, которые нужно распаковать из кортежа», сортируетошибок.
Но каждый день я использую сценарии, которые очень динамичны в отношении того, как конкретно могут быть заданы аргументы, и в каких типах заказы и т. Д.
В конце концов я представляю себе создание сценариев с --help, чтобы переключить этот списоквсе возможные argv и опции, которые вы можете добавить, но пока я начинаю, давайте сделаем это очень , несколько просто:
Я хочу, чтобы следующее невыдает ошибку и не ОЖИДАЕТ выдаваемых аргументов, но принимает их, когда они есть:
#!/usr/bin/env python3
from sys import argv
script, verbose_option, user_input = argv
if "verbose" in verbose_option:
verbose_option = True
else:
verbose_option = False
x = value
if verbose_option == True:
print("var x is set to value...")
else:
pass
if user_input == True: # if true, the var contains any value, correct?
print(user_input)
else:
print("user_input not given but, ... no problem!")
user_input = input("> ") # or maybe it has a default value that can be changed from argv
if verbose_option == True:
print("Would I really need this conditional on every line I left a verbose explanation on?")
else:
pass
Каким-то образом он должен знать, что user_input не предназначен для многословия только потому, что многословия нет, поэтому... может быть, условная ветвь, которая проверяет len()
кортежа аргументов и цифр, "ну, это должно быть то, а не то, что основано на этом числе. ИЛИ ... это слишком сложно и есть лучший способ?
Это менее важно: насколько беспорядочным должен быть подробный вариант кода, если нет лучшего способа, чем я представлял в примере кода, но это дополнительный вопрос.Не допускать ошибок и иметь значения по умолчанию для вещей или средств получения данных, если они не заданы как argv, несмотря на то, что могут быть приняты как argv.