Je voulais vous demander si vous pouviez appeler dans un programme écrit en Ocaml un programme écrit en python, et si la réponse est oui, comment faire?Appelez un programme écrit en python dans un programme écrit en Ocaml
Répondre
Que comptez-vous exactement faire? Voulez-vous l'exécuter et l'oublier? Ensuite, faites une fourchette/exec. Voulez-vous l'exécuter et attendre jusqu'à ce qu'il soit fini mais sinon ne rien faire? Ensuite, utilisez Sys.command
. Voulez-vous lire/écrire? Puis utilise Unix.open_process*
(ou Unix.create_process*
).
Par exemple, si je veux courir ls
et imprimer les résultats, je peux le faire:
let ls = Unix.open_process_in "ls"
try
while true do
Printf.printf "%s\n" (input_line ls)
done
with End_of_file ->()
Unix.close_process_in ls
On dirait que vous pouvez utiliser le Shell library.
Cela dépend de vos besoins exacts, mais vous pouvez utiliser pythons os.system() pour exécuter un programme de la même manière que vous l'appelez à partir de la ligne de commande. Cela devrait être un bon point de départ.
C'est la chose en face - appeler un programme OCaml d'un programme de python. Pas ce qui a été demandé du tout. N'utilisez pas 'os.system()' car le module 'subprocess' est préférable. – nosklo
Ne pas avoir une réelle expérience de la vie avec cela, mais cela semble intéressant (du Integrating Python with other languages wiki):
Pycaml: écrire des modules d'extension Python en OCaml (au lieu de C), et utiliser le code Python et natif bibliothèques des programmes OCaml.
Vous pouvez exécuter des commandes à l'aide Sys.command
, de sorte que vous pouvez juste faire Sys.command "python foo.py"
, en supposant python est dans votre chemin et foo.py est dans le répertoire courant.
Si votre programme est un exécutable (sinon vous le compiler;)), vous pouvez utiliser le module Unix comme vous l'utilisez dans C, par exemple:
let program = "path_to_python_program_exe" in
match Unix.fork() with
| 0 -> (try
Unix.execvp program [|program; "any_more_args_here"|]
with
_ -> printf "%s" "error while execv\n"; exit (-1))
| -1 -> printf "%s" "error accured on fork\n"
| _ -> ignore (wait()); printf "%s" "parent exit...\n"
Lorsque vous compilez, vous utilisez les unix .cma pour le compilateur: ocamlc unix.cma you_ml.ml
- 1. un programme écrit en C peut-il être plus rapide qu'un écrit en OCaml et traduit en C?
- 2. Programme de serveur hôte écrit en Java
- 3. Programme de test d'unité écrit en C
- 4. Types d'expression dans un compilateur écrit en Ocaml
- 5. Forum écrit en Python?
- 6. Récupérer des données d'un programme écrit en C# dans un programme Java
- 7. Ce programme ne lit ni écrit dans un fichier
- 8. comment exécuter un programme écrit sous linux dans Visual Studio
- 9. Comment utiliser un programme précédent que j'ai écrit dans un nouveau programme que j'écris actuellement?
- 10. Comment télécharger un fichier image en utilisant un programme CGI écrit en langage C?
- 11. Exécution d'un programme (écrit en C) sous Linux
- 12. Comment exécuter mon programme Python que j'ai écrit?
- 13. Comment utiliser un plugin firefox dans un programme webdriver selenium écrit en Java?
- 14. programme qui écrit N nombres premiers
- 15. écrit dans un fichier java
- 16. Python 3 écrit dans un tube
- 17. Comment diriger votre programme écrit java pour écrire du texte dans un autre programme?
- 18. exécuter un programme externe (exécutable) en python?
- 19. pratique pratique pour écrire/afficher des informations d'aide/utilisation dans un programme écrit en C?
- 20. Valeurs connues pour les variables dans un programme linéaire écrit en Mathprog
- 21. Comment convertir un "ArrayList <ClassNod>" écrit en Java dans une langue de programme C++?
- 22. Faire un programme d'accueil en python
- 23. Existe-t-il un analyseur GEDCOM écrit en Python?
- 24. écrit à un fichier via FTP en python
- 25. python écrit dictreader en fichier csv
- 26. écrit le programme d'assemblage 8086 qui utilise 21H dans dos
- 27. Générateur d'installateur écrit en Java?
- 28. Un générateur .po écrit en PHP
- 29. Comment transférer un projet écrit en éclipse?
- 30. Si un fichier de paramètres d'application fonctionne avec le même programme écrit en plusieurs langues
J'appelle le programme en python dans le programme ocaml et utilise la sortie dans ce programme. – kafka
Ensuite, utilisez open_process ou create_process. Vous pouvez trouver de la documentation ici: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html –
pourriez-vous expliquer ce que vous entendez par "fork/exec"? –