it-swarm-pt.tech

Chamando uma função Python de um script do Shell

Estou tentando descobrir como chamar uma função Python de um script do Shell.

Eu tenho um arquivo Python com várias funções e preciso usar os valores retornados por eles no meu script do Shell. Existe uma maneira de fazer isso.

Estou fazendo isso para ler um arquivo de configuração usando Python e obtendo os valores no Shell. Existe alguma outra maneira melhor de conseguir isso?.

test.py contém:

import ConfigParser

config = ConfigParser.ConfigParser()
config.read("test.conf")

def get_foo():
    return config.get("locations", "foo")

def get_bar():
    return config.get("locations", "bar")

Preciso armazenar os valores retornados pelas funções Python em uma variável do Shell.

18
user747858

Você pode enviar o resultado de suas funções para a saída padrão solicitando ao interpretador Python para imprimir o resultado:

python -c 'import test; print test.get_foo()'

A opção -c Simplesmente pede Python para executar alguns Python comandos.

Para armazenar o resultado em uma variável, você pode:

RESULT_FOO=`python -c 'import test; print test.get_foo()'`

ou equivalente

RESULT=$(python -c 'import test; print test.get_foo()')

já que backticks e $(…) avaliam um comando e o substituem por sua saída.

PS : Obter o resultado de cada função requer a análise do arquivo de configuração a cada vez, com esta abordagem. Isso pode ser otimizado retornando todos os resultados de uma só vez, com algo como:

ALL_RESULTS=$(python -c 'import test; print test.get_foo(), test.get_bar()')

Os resultados podem ser divididos e colocados em diferentes variáveis ​​com

RESULT_BAR=$(echo $ALL_RESULTS | cut -d' ' -f2)

que pega o segundo resultado e o coloca em RESULT_BAR por exemplo (e da mesma forma: -fn para o resultado #n) .

PPS : Como Pablo Maurin mencionou, provavelmente seria mais fácil fazer tudo em um único intérprete (Python, mas talvez também o Shell), se possível. de calcular variáveis ​​em um programa e usá-las em outro.

28
Eric O Lebigot