Incorporer bash, python
J'ai écris un script Python et je suis en cours d'exécution hors du temps. J'ai besoin de faire certaines choses que je sais assez bien dans bash, donc je me demande juste comment puis-je incorporer certains bash lignes dans un script Python.
Grâce
- -1: "Certaines choses"? Si vous avait des choses particulières que vous voulais de l'aide, on aurait pu vous éviter l'erreur de l'incorporation de bash en Python.
- Je sais que c'était il y a longtemps, mais j'ai juste pris ma première plongée dans l'écriture de scripts bash. J'ai trouvé que je tiens absolument à utiliser Python au lieu de cela chaque fois que possible (ce qui est ma langue principale ATM). Est-il un moyen rapide pour expliquer pourquoi l'incorporation de bash, Python est une erreur?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez l'appeler système de commandes, utilisez la sous-processus module.
Le moyen idéal de le faire:
Vous pouvez également ajouter une belle
__str__
méthode pourScriptException
(vous êtes sûr d'en avoir besoin pour déboguer vos scripts) -- mais je vous laisse le lecteur.Si vous n'utilisez pas
stdout=subprocess.PIPE
etc ensuite, le script sera rattaché directement à la console. Ceci est très pratique si vous avez, par exemple, une invite de mot de passe par ssh. De sorte que vous pouvez ajouter les options de contrôle que vous voulez capturer, stdout, stderr, et stdin.Est
va le faire pour vous?
EDIT: en ce qui concerne la lisibilité
Oui, bien sûr, vous pouvez avoir plus lisible
EDIT2: en ce qui concerne les macros, pas de python ne va pas jusqu'à présent que je sais, mais entre
et de l'exemple précédent, vous obtiendrez ce que vous voulez (mais il faut laisser un peu de dialectique limitations)
En supposant que la commande est prise en charge par le système hôte:
Si vous avez une commande longue, ou un ensemble de commandes. vous pouvez utiliser des variables.
par exemple:
sous-processus et les os.system() fonctionne correctement lorsque bash commandes sont simples et n'ont pas de parenthèses, virgules et des citations.
Moyen Simple pour incorporer des complexes bash argument est d'ajouter un script bash à la fin du script python, avec une unique chaîne de commentaires et d'utilisation simple os.system() commandes à la queue et de le convertir en fichier bash.
Comme mentionné ci-dessus, vous pouvez utiliser os.système(); c'est rapide et sale, mais c'est facile à utiliser et fonctionne dans la plupart des cas. C'est littéralement une cartographie sur le C fonction system ().
http://docs.python.org/2/library/os.html#os.system
http://www.cplusplus.com/reference/cstdlib/system/
Vous pouvez utiliser IPython comme une coquille. Recherche sur le web:
"ipython bash de remplacement", ou regarder ici: stackoverflow.com/questions/209470/can-i-use-python-as-a-bash-replacement.
Vous pouvez appeler IPython à partir d'un script:
Il y a aussi le
commands
module de donner plus de contrôle sur la sortie:https://docs.python.org/2/library/commands.html
J'ai créé le Sultan à l'adresse exactement ce que vous essayez de faire. Il n'a pas de dépendances externes, et essaie d'être aussi léger que possible et fournit un Pythonic interface de Bash.
https://github.com/aeroxis/sultan