J'essaie de comprendre comment appeler A Python fonction d'un script shell.
J'ai un Python fichier avec plusieurs fonctions et j'ai besoin d'utiliser les valeurs renvoyées par eux dans mon script shell. Existe-t-il un moyen de le faire.
Je fais cela afin de lire un fichier de configuration à l'aide de Python et d'obtenir les valeurs dans Shell. Y a-t-il un autre meilleur moyen de y parvenir.
test.py
contient:
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")
J'ai besoin de stocker les valeurs renvoyées par le Python fonctions dans une variable de coque.
Vous pouvez envoyer le résultat de vos fonctions à la sortie standard en demandant au Python Interprète d'imprimer le résultat:
python -c 'import test; print test.get_foo()'
L'option -c
Demande simplement Python= d'exécuter certains Python commandes.
Afin de stocker le résultat dans une variable, vous pouvez donc faire:
RESULT_FOO=`python -c 'import test; print test.get_foo()'`
ou équivalent
RESULT=$(python -c 'import test; print test.get_foo()')
puisque Backticks et $(…)
Évaluez une commande et remplacez-la par sa sortie.
[~ # ~] ps [~ # ~ ~]: Obtenir le résultat de chaque fonction nécessite l'analyse du fichier de configuration à chaque fois, avec cette approche. Cela peut être optimisé en retournant tous les résultats en une fois, avec quelque chose comme:
ALL_RESULTS=$(python -c 'import test; print test.get_foo(), test.get_bar()')
Les résultats peuvent ensuite être divisés et mettre dans différentes variables avec
RESULT_BAR=$(echo $ALL_RESULTS | cut -d' ' -f2)
qui prend le secondaire résultat et le met dans RESULT_BAR
Par exemple (et de même: -fn
pour le résultat #n) .
PPS : Comme Pablo Maurin a mentionné, il serait probablement plus facile de tout faire dans un seul interprète (python, mais peut-être aussi la coquille), si possible. de calculer des variables dans un programme et de les utiliser dans un autre.