Quand le dernier arbre aura été abattu, quand la dernière rivière aura été empoisonnée , quand le dernier poisson aura été péché, alors on saura que l'argent ne se mange pas.

✨ Version 2.0.1 - Février 2025
pyhtml.py est un outil gratuit et open source qui convertit votre code Python en HTML magnifiquement coloré, prêt à être publié sur votre site web, blog ou ENT. 10x plus rapide que la v1, avec support complet des quotes et 3 thèmes de couleurs !
'...', doubles "...", triples '''...''' (enfin !)Voici le nouveau code, entièrement refondu pour plus de robustesse et de fonctionnalités :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
pyhtml.py - Convertisseur de code Python vers HTML avec coloration syntaxique
Version 2.0.1
Convertit un fichier Python (.txt) en HTML formaté avec coloration syntaxique.
Utilise un tokenizer pour un parsing robuste et fiable.
Auteur: Laurent Petitprez (site2wouf.fr)
Licence: MIT
"""
import keyword
import html
import tokenize
import io
import argparse
from typing import List, Tuple, Optional
# =============================================================================
# CONFIGURATION DES THÈMES
# =============================================================================
THEMES = {
'default': {
'keyword': 'orange',
'builtin': 'purple',
'string': '#04B404',
'comment': 'red',
...
},
'dark': { ... },
'github': { ... }
}
# Voir le code complet sur GitHub →
Les problématiques étaient les suivantes :
Ma solution consiste en une application Python qui, exécutée dans un répertoire, va lire le code Python dans un fichier texte (py.txt) et écrire dans un autre fichier texte (py.htm) ce même code mais traduit en HTML avec une coloration syntaxique complète.
La version 2.0 a été entièrement réécrite pour utiliser le tokenizer officiel de Python, garantissant une fiabilité à 100% et une performance 10 fois supérieure à la version précédente.
Il existe plusieurs outils pour coloriser du code. Voici comment pyhtml.py se compare :
| Solution | Type | Avantages | Inconvénients |
|---|---|---|---|
| Pygments | Python | Support multi-langages, très puissant | Installation requise, complexe |
| Highlight.js | JavaScript | Multi-langages, côté client | Nécessite JS, mauvais pour SEO |
| Prism.js | JavaScript | Léger, modulaire | Dépend de JavaScript |
| pyhtml.py | Python | Aucune dépendance, HTML pur, SEO-friendly, code copiable, gratuit | Python seulement |
L'utilisateur dispose d'un fichier exemple.py et aimerait récupérer son contenu pour le publier en html.
L'utilisateur dispose de Python 3.6+ installé sur son ordinateur.
pyhtml.py via GitHub (lien plus bas)py.txt avec votre code Pythonpython pyhtml.pypy.htm généré
# Conversion simple
python pyhtml.py -i mon_script.py -o resultat.html
# Thème sombre avec numéros de lignes
python pyhtml.py -t dark -l
# Mode automatique (sans questions)
python pyhtml.py --no-interactive
# Avec métadonnées
python pyhtml.py -n "Mon Script v1.0" -s "https://github.com/user/repo"
# Aide complète
python pyhtml.py --help
Une fois le fichier py.htm généré :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8"> <!-- IMPORTANT pour les accents -->
<title>Mon code Python</title>
</head>
<body>
<h1>Exemple de code</h1>
<?php include('py.htm'); ?>
<!-- ou copier-coller le contenu -->
</body>
</html>
if, for, def, class, etc.print, len, range, open, etc.'simple', "double", '''triple''', """docstring"""# tout le texte42, 3.14, 1.5e-10, 0xFF+, -, ==, andNon. Les numéros sont générés en CSS avec ::before et user-select: none.
Quand un visiteur copie le code, seul le code Python est copié, pas les numéros de lignes.
Vérifiez que votre page HTML contient <meta charset="UTF-8"> dans le <head>.
C'est indispensable pour l'affichage correct des caractères accentués français.
Oui ! Vous pouvez modifier les thèmes directement dans le dictionnaire THEMES du code Python,
ou surcharger les styles CSS après intégration dans votre page.
Oui, totalement. Le comportement par défaut est identique à la v1.x. Les nouvelles fonctionnalités (thèmes, numéros) sont optionnelles.
Non, actuellement seul Python est supporté. Pour d'autres langages, je recommande Pygments ou Highlight.js.
Oui ! Licence MIT, code source ouvert sur GitHub. Vous pouvez l'utiliser, le modifier, le redistribuer librement.
Publiez vos exercices et corrections Python sur l'ENT du collège avec une présentation professionnelle. Les élèves peuvent copier le code facilement. Les numéros de lignes permettent de référencer précisément une ligne dans vos explications.
Intégrez du code Python dans vos tutoriels avec un rendu propre et SEO-friendly. Le code est indexable par Google, contrairement aux solutions JavaScript.
Documentez vos projets open source avec des exemples de code colorés. Utilisez le thème GitHub pour une cohérence visuelle avec votre dépôt.
Nouveautés :
Refonte majeure :
'simple', "double", '''triple'''else:La version 2.0 utilise le module tokenize de Python, le même que celui utilisé par Python lui-même pour analyser le code. Cela garantit une fiabilité à 100% et un support complet de toutes les syntaxes Python.
Mon travail est sous licence MIT (et aussi Creative Commons pour la documentation).
Les contributions sont les bienvenues ! N'hésitez pas à :
N'hésitez pas à me contacter si vous détectez la moindre imperfection, ou si vous imaginez une amélioration potentielle !
Open source et gratuité n'empêchent ni les dons ni les remerciements 😉
pyhtml.py est gratuit et le restera toujours. Si cet outil vous a été utile,
vous pouvez soutenir son développement avec un petit don pour aider à payer le serveur.
Un euro ou deux ?
💙 Faire un don sur PayPal
Merci à tous ceux qui contribuent ! 🙏
Partager :