La sortie Python est disponible depuis Haxe 3.2, alors essayons-le.
Téléchargez et installez la dernière version à partir des [Téléchargements] officiels de Haxe (http://haxe.org/download/).
Si vous utilisez homebrew sur votre Mac, ce qui suit est également OK.
$ brew install haxe --HEAD
Vous pouvez également consulter Building Haxe et le construire vous-même.
Omis car il existe de nombreux autres articles. Pour le moment, Haxe semble être capable de sortir uniquement Python3.
Hello World
Essayons la sortie Python avec Official Hello World.
Tout d'abord, créez HelloWorld.hx avec le contenu suivant.
HelloWorld.hx
class HelloWorld {
static public function main() {
trace("Hello World");
}
}
Compilez ce qui précède dans helloworld.py avec haxe.
$ haxe -main HelloWorld -python helloworld.py
L'option -main est la classe principale et l'option -python est le nom de fichier à afficher en spécifiant Python. Voir Utilisation du compilateur pour plus de détails.
Vous pouvez également créer et compiler compile.hxml comme indiqué ci-dessous.
compile.hxml
-python helloworld.py
-main HelloWorld
$ haxe comple.hxml
#Haxe ci-dessus-main HelloWorld -python helloworld.bonjour le monde comme py.py est sorti
Si la compilation réussit, exécutez la sortie helloworld.py.
$ python3 helloworld.py
Hello World
Hello World est sorti en toute sécurité.
En outre, la sortie de helloworld.py à ce moment était la suivante.
helloworld.py
class HelloWorld:
@staticmethod
def main():
print("Hello World")
HelloWorld.main()
Vous pouvez obtenir les arguments de ligne de commande depuis Sys.args.
Main.hx
class Main {
static public function main():Void {
var args = Sys.args();
for (arg in args) {
Sys.println(arg);
}
}
}
Imprimez une liste d'arguments de ligne de commande avec Sys.println.
$ haxe -main Main -python main.py
$ python3 main.py foo
foo
$ python3 main.py foo bar
foo
bar
À ce moment, la sortie main.py avait 378 lignes. (longue!) Probablement parce que j'ai commencé à utiliser Sys, et qu'il contient quelques extras. Cependant, il serait intéressant de lire la sortie Python.
Essayez de sortir le fichier avec sys.io.File
Main.hx
import sys.io.File;
class Main {
static public function main():Void {
var output = File.write("output.txt");
output.writeString("test\n");
output.close();
}
}
$ haxe -main Main -python main.py
$ python3 main.py
$ cat output.txt
test
Si vous utilisez python.lib.Codecs pour la sortie de fichier, ce sera équivalent aux codecs Python.
Main.hx
import python.lib.Codecs;
class Main {
static public function main():Void {
var file = Codecs.open("output.txt", "w");
file.write("test\n");
}
}
$ haxe -main Main -python main.py
$ python3 main.py
$ cat output.txt
test
Je ne l'écrirai pas ici car c'est long, mais si vous lisez la sortie réelle main.py, vous pouvez voir qu'il utilise codecs.open.
Bien sûr, python.lib.Codecs ne peut être utilisé que lors de la sortie de Python, donc soyez prudent. (Sys.io.File peut être compilé pour d'autres plates-formes telles que C ++, PHP, neko)
Certaines des bibliothèques standard de Python sont toujours disponibles, comme dans le cas de l'utilisation des codecs ci-dessus. De Issue # 2924, il semble qu'une partie de sys.net et tout sys.db n'ont pas été implémentés (sera implémenté bientôt). Vous pouvez vérifier ceux disponibles dans le paquet python.lib.
Il existe une bibliothèque d'analyseurs HTML implémentée par Haxe appelée HtmlParser. Puisqu'il s'agit d'une implémentation (probablement pure) de Haxe, elle devrait pouvoir sortir sur n'importe quelle plate-forme prise en charge par Haxe. Oui, bien sûr en Python!
C'est pourquoi je vais installer et utiliser la bibliothèque Haxe.
$ haxelib install HtmlParser
Main.hx
import sys.io.File;
import htmlparser.HtmlDocument;
class Main {
static public function main():Void {
var html = new HtmlDocument(File.getContent("example.html"));
var titles = html.find(">html>head>title");
trace(titles[0].innerHTML);
}
}
Lors de l'utilisation d'une bibliothèque, spécifiez la bibliothèque à utiliser avec l'option -lib au moment de la compilation.
$ haxe -main Main -python main.py -lib HtmlParser
example.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title of Example</title>
</head>
<body>
<h1>Example</h1>
</body>
</html>
$ python3 main.py
Title of Example
Vous pouvez voir que vous pouvez analyser le HTML et obtenir le titre.
En d'autres termes, toute bibliothèque d'implémentation Haxe (pure) peut être utilisée pour Python, et la même bibliothèque peut être utilisée pour d'autres plates-formes. incroyable! (Bien sûr, il existe déjà un certain nombre d'excellentes bibliothèques en Python pour les parseurs HTML ...)
Recommended Posts