Python-Code auf einer Homepage darstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

mir ist zwar so, als hätte ich zu diesem Thema schon mal was gelesen - ich weis nur nicht mehr wo.:oops:
Alos - ich möchte Python Code auf einer Homepage darstellen. Mit allen Einrückungen und ggf. auch mit der farblichen Darstellung. Gibt es dazu schon etwas fertiges? Ich habe mich bisher kaum mit so etwas beschäftigt. Ich benötige deshalb etwas, was nicht so kompliziert ist :D

Stephan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann nimm Pygments. Unterstützt neben Python auch viele andere Sprachen und ist inzwischen ziemlich populär.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Ich verwende dafür recht gerne vim. Einfach

Code: Alles auswählen

:runtime! syntax/2html.vim
im command-mode eintippen, und fertig.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Danke für die Tips. Ich werde das in der nächsten Zeit mal ausprobieren.

Stephan
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Mit Pygments:

Code: Alles auswählen

pygmentize -o mein.html python-datei.py
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Ich habe mit folgender Datei getestet:

Code: Alles auswählen

# -*- coding: iso-8859-15 -*-

from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter

f = file('JoPop3.2.pyw', 'r')
out = file('testcode.html', 'a')

code = f.read()

lexer = get_lexer_by_name("python", stripall=True)
formatter = HtmlFormatter(linenos=True, encoding='utf-8', style='colorful')
result = highlight(code, lexer, formatter, outfile = out)


f.close()
out.close()
Der Code wird auch als html dargestellt. Nur leider ohne die gewünschte Farbgebung.

Was muss da noch geändert werden, damit ich eine farbige Darstellung bekomme? In der Doku habe ich nichts gefunden (oder überlesen?)

Stephan
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Wie du an der HTML-Ausgabe sehen kannst, gibt Pygments nur CSS-Klassen aus. Die passenden CSS-Definitionen bekommst du mit `formatter.get_style_defs()` oder, wenn du ein ganzes HTML-Dokument mit der Formatteroption "full=True" erzeugst.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Danke, jetzt wird's bunt :D

Stephan
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ansonsten gibts noch (gut, die Lösung ist nicht so groovy) die Möglichkeit mit der Formatteroption noclasses=True pygments die Stildefinitionen direkt in die <span> Elemente zu stecken. Ich rate aber mal davon ab ;)
TUFKAB – the user formerly known as blackbird
Antworten