Повышение надежности скриптов
Что произойдет, если запустить скрипт greet.py из предыдущего шага без указания имени? Давайте попробуем.
python greet.py
Вы столкнетесь с ошибкой.
Traceback (most recent call last):
File "/home/labex/project/greet.py", line 4, in <module>
name = sys.argv[1]
IndexError: list index out of range
Эта ошибка IndexError возникает потому, что скрипт пытается получить доступ к sys.argv[1], но поскольку аргумент не был предоставлен, этот индекс не существует. Надежный скрипт должен корректно обрабатывать такие случаи.
Давайте модифицируем greet.py, чтобы проверить, был ли предоставлен аргумент. Если нет, будет использовано имя по умолчанию. Мы можем проверить количество элементов в списке sys.argv с помощью функции len(). Если len(sys.argv) больше 1, это означает, что был предоставлен хотя бы один аргумент.
Обновите ваш файл greet.py следующим кодом:
import sys
if len(sys.argv) > 1:
## Используем предоставленный аргумент, если он существует
name = sys.argv[1]
else:
## Используем имя по умолчанию, если аргумент не предоставлен
name = "World"
print(f"Hello, {name}!")
Теперь ваш скрипт стал более надежным. Запустите его снова без аргумента:
python greet.py
На этот раз он выполнится без ошибок и использует имя по умолчанию.
Hello, World!
И он по-прежнему корректно работает, когда вы предоставляете аргумент:
python greet.py LabEx
Hello, LabEx!
Обработка потенциальных ошибок и предоставление поведений по умолчанию являются ключевыми практиками при написании надежных приложений командной строки.