site2wouf.fr : Python vers HTML - v2.0.1

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.

Geronimo (sur mon Tshirt)

Partager :

Facebook X (Twitter) LinkedIn Email WhatsApp

✨ 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 !

🎉 Quoi de neuf dans la version 2.0.1 ?

Le code source de pyhtml.py v2.0.1

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 →

📄 Code complet sur GitHub

Ce code c'est quoi ?

Les problématiques étaient les suivantes :

Ma solution :

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.

Pourquoi choisir pyhtml.py plutôt qu'une autre solution ?

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

Quand utiliser pyhtml.py ?

Quand utiliser les alternatives ?

Mode d'emploi :

Prérequis:

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.

La démarche pas à pas:

Méthode simple (compatible v1.x)

  1. Télécharger pyhtml.py via GitHub (lien plus bas)
  2. Créer un fichier py.txt avec votre code Python
  3. Lancer : python pyhtml.py
  4. Répondre aux questions (thème, numéros de lignes, nom, lien)
  5. Récupérer le fichier py.htm généré

Méthode avancée (CLI)

# 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

Intégration dans votre page web

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>

Caractéristiques techniques

Coloration syntaxique complète

Les 3 thèmes

Questions fréquentes (FAQ)

❓ Les numéros de lignes sont-ils copiés avec le code ?

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

❓ Les accents s'affichent mal, que faire ?

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.

❓ Puis-je personnaliser les couleurs ?

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.

❓ La v2.0 est-elle compatible avec mes anciens fichiers ?

Oui, totalement. Le comportement par défaut est identique à la v1.x. Les nouvelles fonctionnalités (thèmes, numéros) sont optionnelles.

❓ Puis-je utiliser pyhtml.py pour d'autres langages ?

Non, actuellement seul Python est supporté. Pour d'autres langages, je recommande Pygments ou Highlight.js.

❓ C'est vraiment gratuit ?

Oui ! Licence MIT, code source ouvert sur GitHub. Vous pouvez l'utiliser, le modifier, le redistribuer librement.

Exemples d'utilisation

🎓 Pour les enseignants

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.

📝 Pour les blogueurs tech

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.

💻 Pour les développeurs

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.

📦 Autres ressources : Python apprendre par l'exemple

🛠️ Exemples sur site2wouf.fr

💻 Tester

📖 Blog

📥 Téléchargements et ressources

// Remarques, notes de version et historique

📋 Version actuelle : 2.0.1 (01/02/2025)

Nouveautés :

📋 Version 2.0.0 (Février 2025)

Refonte majeure :

📋 Version 1.1.1

🛠️ Architecture technique

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.

📊 Comparaison des performances

📜 Licence et contribution

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 ! 🙏