Tornando Scripts Mais Robustos
O que acontece se você executar o script greet.py do passo anterior sem fornecer um nome? Vamos tentar.
python greet.py
Você encontrará um erro.
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
Este IndexError ocorre porque o script tenta acessar sys.argv[1], mas como nenhum argumento foi fornecido, este índice não existe. Um script robusto deve lidar com esses casos de forma graciosa.
Vamos modificar greet.py para verificar se um argumento foi fornecido. Se não, ele usará um nome padrão. Podemos verificar o número de itens na lista sys.argv usando a função len(). Se len(sys.argv) for maior que 1, isso significa que pelo menos um argumento foi fornecido.
Atualize seu arquivo greet.py com o seguinte código:
import sys
if len(sys.argv) > 1:
## Usa o argumento fornecido se ele existir
name = sys.argv[1]
else:
## Usa um nome padrão se nenhum argumento for fornecido
name = "World"
print(f"Hello, {name}!")
Agora, seu script está mais robusto. Execute-o novamente sem um argumento:
python greet.py
Desta vez, ele é executado sem erros e usa o nome padrão.
Hello, World!
E ele ainda funciona corretamente quando você fornece um argumento:
python greet.py LabEx
Hello, LabEx!
Lidar com erros potenciais e fornecer comportamentos padrão são práticas essenciais para escrever aplicações de linha de comando confiáveis.