Eu uso o python para criar as configurações do meu projeto, mas preciso de ajuda para obter os argumentos da linha de comando.
Eu tentei isso no terminal:
$python myfile.py var1 var2 var3
No meu arquivo Python, quero usar todas as variáveis que são inseridas.
python
command-line
ParisNakitaKejser
fonte
fonte
Respostas:
O tutorial do Python explica :
Mais especificamente, se você executar
python example.py one two three
:fonte
fornecerá uma lista de argumentos (sem incluir o nome do arquivo python)
fonte
[1:]
significa isso ?[1:]
para cima, porque o primeiro argumento desys.argv
é por padrão o nome do arquivo python que você está executando, por exemplotestrun.py
.Eu recomendo o
argparse
que vem com o Python 2.7 e posterior.O
argparse
módulo reduz o código da placa da caldeira e torna seu código mais robusto, porque o módulo lida com todos os casos de uso padrão (incluindo subcomandos), gera a ajuda e o uso para você, verifica e higieniza a entrada do usuário - tudo o que você precisa se preocupar quando precisar estão usandosys.argv
abordagem. E é de graça (embutido).Aqui está um pequeno exemplo:
e a saída para
python prog.py -h
e
python prog.py 1
como você esperaria:fonte
parser.add_argument('var3', nargs='?', type=int, default=3)
var3 é um parâmetro opcional; se você não especificar um valor na linha de comando, poderá acessar a var3 no seu código, valor padrão para var3 = 3Código Python:
Invocação:
Resultado:
fonte
Você pode usar
sys.argv
para obter os argumentos como uma lista.Se você precisar acessar elementos individuais, poderá usar
onde
i
está index,0
fornece o nome do arquivo python que está sendo executado. Qualquer índice depois disso são os argumentos passados.fonte
Se você chamar assim:
$ python myfile.py var1 var2 var3
Semelhante às matrizes que você também possui,
sys.argv[0]
que é sempre o diretório de trabalho atual.fonte
sys.argv[0]
não é o diretório de trabalho atual. É o nome do arquivo que está sendo executado.Algumas coisas adicionais em que consigo pensar.
Como o @allsyed disse, o sys.argv fornece uma lista de componentes (incluindo o nome do programa); portanto, se você quiser saber o número de elementos transmitidos pela linha de comando, use len () para determiná-lo. Com base nisso, você pode criar mensagens de exceção / erro se o usuário não passar um número específico de parâmetros.
Além disso, se você estiver procurando uma maneira melhor de lidar com argumentos de linha de comando, sugiro que você consulte https://docs.python.org/2/howto/argparse.html
fonte