Essayez la sortie Python avec Haxe 3.2

La sortie Python est disponible depuis Haxe 3.2, alors essayons-le.

Installation

Installation de Haxe 3.2

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.

Installer Python 3.x

Omis car il existe de nombreux autres articles. Pour le moment, Haxe semble être capable de sortir uniquement Python3.

Tutoriel Haxe / Python

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()

Obtenir des arguments de ligne de commande

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.

Sortie de fichier

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

Lors de la sortie d'un fichier avec des codecs

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)

Utilisez la bibliothèque avec Haxe / Python

Appelez la bibliothèque Python standard

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.

Sortie Python à l'aide de la bibliothèque Haxe

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 ...)

Problèmes

Recommended Posts

Essayez la sortie Python avec Haxe 3.2
Essayez de gratter avec Python.
Essayez d'exécuter Python avec Try Jupyter
Essayez la reconnaissance faciale avec Python
Essayez Python
Essayez de gratter avec Python + Beautiful Soup
Essayez la décomposition de valeurs singulières avec Python
Sortie vers un fichier csv avec Python
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
[Note] Sortie Hello world avec python
Sortie du journal de test unitaire avec python
Essayez la reconnaissance faciale avec python + OpenCV
Essayez la simulation de contrôle de fréquence avec Python
Essayez de produire de l'audio avec M5 STACK
FizzBuzz en Python3
Essayez de reproduire un film couleur avec Python
Grattage avec Python
Essayez de vous connecter à qiita avec Python
Statistiques avec python
Grattage avec Python
Sortir les caractères de couleur en joli avec python
Python avec Go
Essayez de travailler avec des données binaires en Python
sortie d'apprentissage python
Sortie du journal Python vers la console avec GAE
Twilio avec Python
Intégrer avec Python
Essayez d'utiliser Python avec Google Cloud Functions
Jouez avec 2016-Python
Python> essayez: / sauf:
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
UnicodeEncodeError lutte avec la sortie standard de python3
Essayez le scraping HTML avec la bibliothèque Python
Bingo avec python
Essayez d'appeler Python depuis Ruby avec une économie
Zundokokiyoshi avec python
Essayez de dessiner une carte avec python + cartopy 0.18.0
[Suite] Essayez l'accès au registre PLC avec Python
Essayez d'attribuer ou de changer avec Python: lambda
Excel avec Python
[Pour les débutants] Essayez le web scraping avec Python
Micro-ordinateur avec Python
Cast avec python
nginxparser: essayez d'analyser le fichier de configuration nginx avec Python
3.14 π jour, alors essayez de sortir en Python
Essayez-le avec JupyterLab en Python japonais Word Cloud.
Lire JSON avec Python et générer un CSV
Essayez d'exécuter Google Chrome avec Python et Selenium
Essayez de résoudre le diagramme homme-machine avec Python
Le journal Python n'est pas sorti avec docker-compose up
Essayez de dessiner une courbe de vie avec python
Essayez de créer un code de "décryptage" en Python
J'ai essayé de sortir LLVM IR avec Python
Essayez de générer automatiquement des documents Python avec Sphinx
Essayez de travailler avec Mongo en Python sur Mac
[Python3] [Ubuntu16] [Docker] Essayez la reconnaissance faciale avec OpenFace
Essayez de créer un groupe de dièdre avec Python
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)