2010-10-04 3 views
3

Je construis un standalone en utilisant python. Ce standaloone doit exécuter un fichier ruby.Meilleure façon d'exécuter le fichier ruby ​​en utilisant Python et Comment obtenir la sortie de la console Ruby lorsque le fichier Ruby est exécuté à partir de Python?

J'ai lu cet article - http://www.decalage.info/python/ruby_bridge J'ai utilisé os.system() qui fonctionne bien. Mais j'ai un problème ici. Si un fichier ruby ​​a une erreur, le fichier se termine simplement sans erreur. Pouvez-vous s'il vous plaît laissez-moi savoir comment obtenir la sortie de la console ruby ​​afin que je puisse afficher la même chose dans mon standalone.

Répondre

5

vous pouvez utiliser le module subprocess

cmd="ruby myrubyscript.rb"                   
p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)        
output, errors = p.communicate()       

utiliser la variable output

Juste une note, votre programme Python dépendra si vous avez Ruby installé ou non. Si possible, essayez de tout faire en Python.

+0

Salut user131527, Merci pour la réponse. Mais il semble y avoir un problème. Le résultat n'est pas imprimé. Par exemple nous prenons un fichier ruby ​​qui a l'impression "Bonjour tout le monde". Maintenant, j'utilise le code ci-dessus et imprimer la sortie. La sortie n'est pas affichée. Même chose pour les erreurs - je veux dire considérer le fichier ruby ​​avec une erreur de syntaxe et essayer d'imprimer les erreurs. – abhishek

+0

Assurez-vous d'importer le module de sous-processus. Assurez-vous que votre script Ruby imprime quelque chose. – ghostdog74

+0

j'avais module de sous-processus importé et le fichier ruby ​​fonctionne. Si j'imprime la sortie -> Blank est affiché et si j'imprime les erreurs -> None est affiché – abhishek

Questions connexes