2009-12-16 5 views
6

Il y a une bibliothèque Perl à laquelle j'aimerais accéder depuis Python. Comment l'utiliser?Perl dans Python?

FYI, le logiciel est NCleaner. Je voudrais l'utiliser depuis Python pour transformer une chaîne HTML en texte. (Oui, je connais le Python html2text d'aaronsw Ncleaner est meilleur, car il supprime la plaque de chaudière.)

Je ne veux pas exécuter le programme Perl comme script et l'appeler de façon répétée, car il a une valeur initiale coûteuse. temps de chargement et je l'appelle de nombreuses fois.

+0

Avez-vous pensé à écrire un programme Perl et à l'appeler via la ligne de commande via Python? –

+2

Je ne veux pas exécuter le programme Perl comme un script et l'appeler à plusieurs reprises, car il a un temps de chargement initial coûteux et je l'appelle de nombreuses fois. –

+1

L'exécuter en tant que processus persistant n'est pas totalement déraisonnable non plus ... – hobbs

Répondre

12

pyperl fournit l'intégration perl pour python, mais honnêtement ce n'est pas la façon dont j'irais. Je seconde la suggestion de Roboto - écrire un script qui exécute NCleaner (soit le traitement de stdin vers stdout, soit travailler sur des fichiers temporaires, selon ce qui est le plus approprié), et l'exécuter comme un sous-processus. Ou, comme je vois sur la page NCleaner qu'elle a une implémentation C, utilisez les possibilités de Python pour lier le code C et écrire un module Python qui enveloppe l'implémentation de NCleaner C. Ensuite, dans le futur, la réponse à l'invocation de NCleaner de Python sera "ici, utilisez ce module".

Note: Inline::Python est meilleur code que pyperl, et je suggère d'utiliser qu'au lieu, mais il ne supporte que Python ayant appel retour à Perl lorsque Python est appelé à partir de Perl en premier lieu - la possibilité d'intégrer Perl dans Python est répertorié comme une caractéristique future possible, mais cela a été le cas depuis 2001, alors ne retenez pas votre souffle.