sys.argv
Em essência, sys.argv () é uma lista de todas as entradas da linha de comando. Quando o script é executado, você pode alimentar a entrada do usuário de várias maneiras, e uma dessas maneiras é através da linha de comando. Nesta primeira instância, suponhamos que tenhamos um script simples chamado principal.py.
Imprimir (“Hello World”)Ao executar o script, vamos adicionar alguns argumentos da linha de comando, além do nome do script. Se fôssemos executar o script, receberíamos o seguinte:
$ python3 main.Py o que você está fazendo?Você percebe aqui que os argumentos da linha de comando não interferiram no próprio script.
Então, agora, vamos modificar um pouco o script. Então, suponha que agora temos um script chamado principal.PY com o seguinte conteúdo:
Importar sistemasSe fôssemos executar o script, receberíamos o seguinte:
$ python3 main.pyComo você pode ver, obtemos uma lista com um item, porque apenas fornecemos um item, o nome do script. Agora, suponha que forneçamos a ele uma linha de comando ligeiramente diferente argumentos de entrada.
Importar sistemasSe fôssemos executar o script, receberíamos o seguinte:
$ python3 main.Py Hello WorldAgora, o que acontece é que ele recupera tudo o que fornecemos através da linha de comando ou de todos os argumentos da linha de comando fornecidos pelo usuário. No meu caso, adicionei 'Hello World' após o nome do script e, como tal, ele o recuperou para a lista.
sys.argv [0]
Sys.argv [0] é o primeiro argumento na lista. Em todos os casos, o primeiro argumento é sempre o nome do script.
Importar sistemasAo executar o script, digitaríamos o seguinte:
$ python3 main.pysys.argv [n]
Como alternativa, você pode recuperar um argumento específico da linha de comando. Por exemplo, você pode recuperar a entrada do usuário por meio de argumentos da linha de comando ao escrever um programa Python. Nesse cenário, recuperaremos os três primeiros argumentos da linha de comando.
Importar sistemasAo executar o script, digitaríamos o seguinte, por exemplo:
$ python3 main.Py Trevor Travis TimAqui, sys.argv [1] é o argumento da linha do segundo comando, enquanto sys.argv [2] é o argumento da linha de comando do terceiro e sys.argv [3] é o quarto argumento da linha de comando. Isso ocorre porque, embora o índice comece em 0, e sistemas.argv [0] é o nome do script.
E daí se o usuário esperasse entrar n número de entradas e não sabíamos quantas entradas houve? Suponha que o script a seguir tenha sido escrito:
Importar sistemasAo executar o script, digitaríamos o seguinte, por exemplo:
$ python3 main.Py Olá Trevor Travis e TimAqui, sys.argv [1:] significa que todos os valores do sistema.argv [1] são usados até o final da lista. Nesse caso, podemos adicionar quantos argumentos da linha de comando quiser.
Cordas
Observe que todos os valores capturados pelos sistemas variáveis.argv são cordas. Portanto, suponha que queríamos adicionar três números que o usuário entra.
Importar sistemasSe fôssemos executar o script, receberíamos o seguinte:
$ python3 main2.py 3 4 5O que obtemos é um TypeError. Isso ocorre porque todos os valores obtidos da lista são valores "string" enquanto exigimos valores inteiros para adicionar. Para corrigir isso, teríamos que converter as cordas para números inteiros:
Importar sistemasSe fôssemos executar o script, receberíamos o seguinte:
$ python3 main2.py 3 4 5Adicionamos int (sys.arg [n]) garantiu que convertemos a corda em um número inteiro.
Sys.erros de argv
Um dos erros mais comuns que são jogados (quando não usamos sistemas.argv [1:], mas especifique o enésimo valor usando o sistema.argv [n]) é o de um indexError (índice de lista fora do alcance). O que esse erro significa é que os argumentos da linha de comando não foram especificados e, para evitar esse erro, devemos tomar algumas etapas de precaução:
Importar sistemasAo executar o script, digitaríamos o seguinte, por exemplo:
$ python3 main.py Travis Trevor TimPara evitar o erro, devemos ajustar o comprimento dos argumentos da linha de comando. No exemplo anterior, temos três nomes e um nome de script, o que significa que há um total de 4 valores. Assim, dizemos que, se o comprimento for superior a 4 ou menos de 4, peça ao usuário que insira três nomes; caso contrário, imprima os três nomes.
O módulo SYS é muito importante, pois permite a interação com o intérprete Python. Em particular, os sistemas variáveis.Argv é uma lista que contém todos os argumentos de linha de comando inseridos dos usuários. Sys.argv [0] define o nome do script em todos os casos. Embora sys.argv () é muito comumente utilizado para reunir argumentos da linha de comando, outra maneira ainda melhor de reunir argumentos da linha de comando é usando o argparse. Mas isso é uma história para outro dia!