sys.Argv em Python

sys.Argv em Python
O módulo SYS consiste em funções e variáveis ​​que interagem fortemente com o intérprete. O módulo SYS vem pré-carregado em python e não requer nenhuma instalação. Entre as muitas funções e variáveis ​​estão sistemas.argv (). Sys.argv () é usado para reunir a entrada do usuário da linha de comando. Neste tutorial, estaremos aprendendo sobre o sistema.argv () e seus usos comuns.

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?
Olá Mundo

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 sistemas
Imprimir (sys.argv)

Se fôssemos executar o script, receberíamos o seguinte:

$ python3 main.py
['principal.py ']

Como 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 sistemas
Imprimir (sys.argv)

Se fôssemos executar o script, receberíamos o seguinte:

$ python3 main.Py Hello World
['principal.Py, "Hello", "World ']

Agora, 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 sistemas
name_of_script = sys.argv [0]
print (name_of_script)

Ao executar o script, digitaríamos o seguinte:

$ python3 main.py
principal.py

sys.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 sistemas
nome1 = sys.argv [1]
nome2 = sys.argv [2]
nome3 = sys.argv [3]
Print ("Hello", Name1, ',', Name2, 'e', ​​Name3)

Ao executar o script, digitaríamos o seguinte, por exemplo:

$ python3 main.Py Trevor Travis Tim
Olá Trevor, Travis e Tim

Aqui, 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 sistemas
Lista = sys.argv [1:]
Para valor na lista:
Imprimir (valor)

Ao executar o script, digitaríamos o seguinte, por exemplo:

$ python3 main.Py Olá Trevor Travis e Tim
olá
Trevor
Travis
e
Tim

Aqui, 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 sistemas
num1 = sys.argv [1]
num2 = sys.argv [2]
num3 = sys.argv [3]
List = [num1, num2, num3]
total = soma (lista)
Imprimir (total)

Se fôssemos executar o script, receberíamos o seguinte:

$ python3 main2.py 3 4 5
TypeError: Tipo (s) de operando não suportado para +: 'int' e 'str'

O 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 sistemas
num1 = int (sys.argv [1])
num2 = int (SYS.argv [2])
NUM3 = int (SYS.argv [3])
List = [num1, num2, num3]
total = soma (lista)
Imprimir (total)

Se fôssemos executar o script, receberíamos o seguinte:

$ python3 main2.py 3 4 5
12

Adicionamos 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 sistemas
Se Len (SYS.argv) 4:
print ("Por favor, digite três nomes")
Se Len (SYS.arv) == 4:
nome1 = sys.argv [1]
nome2 = sys.argv [2]
AME3 = SYS.argv [3]
print ("hello", nome1)
print ("hello", nome2)
print ("hello", nome3)

Ao executar o script, digitaríamos o seguinte, por exemplo:

$ python3 main.py Travis Trevor Tim
Olá Travis
Olá Trevor
Olá Tim

Para 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!