Config Files - templates?

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.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Config Files - templates?

Beitragvon thelittlebug » Mittwoch 1. August 2007, 22:39

Hi :)

Nach langer (anstrengender) Pause bin ich mal wieder hier und mir fällt nichts besseres ein als eine Frage zu stellen. Ich bin mir unsicher wo das Thema passt, ich hoffe ich habe es getroffen ;)

Ich komme gerade in den Genuß Typo3 Installationen zu automatisieren, hierfür benötige ich alles mögliche an Configfiles die ich nicht unbedingt so

Code: Alles auswählen

meinergebnis = """
meinetolleapachevariable = %s
""" %meintollerinhalt


erstellen möchte da mir das bei längeren Configteilen zu unübersichtlich wird.

Da dachte ich mir: warum eigentlich keine Template Engine?
Nun gut, die sind ja alle irgendwie so "fett"
Gibts da nichts schlankeres als die großen für die Webjünger?

thx & lg herby[/code]
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Donnerstag 2. August 2007, 07:21

Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Config Files - templates?

Beitragvon gerold » Donnerstag 2. August 2007, 07:35

thelittlebug hat geschrieben:

Code: Alles auswählen

meinergebnis = """
meinetolleapachevariable = %s
""" %meintollerinhalt

[...]
Da dachte ich mir: warum eigentlich keine Template Engine?

Hallo Herby!

Du hast mehrere Möglichkeiten.

Die von dir oben beschriebene:

Code: Alles auswählen

>>> template = """
... variable1 = %s
... variable2 = %s
... """
>>> print template % (10, 20)

variable1 = 10
variable2 = 20

>>>


Dann die etwas übersichtlichere Variante:

Code: Alles auswählen

>>> template = """
... variable1 = %(variable1)s
... variable2 = %(variable2)s
... """
>>> variable1 = 10
>>> variable2 = 20
>>> print template % locals()

variable1 = 10
variable2 = 20


Dann die Variante mit dem eingebauten ``string.Template``:

Code: Alles auswählen

>>> from string import Template
>>> template = """
... variable1 = $variable1
... variable2 = ${variable2}
... """
>>> variable1 = 10
>>> variable2 = 20
>>> print Template(template).safe_substitute(locals())

variable1 = 10
variable2 = 20

>>>


Dann noch die mit Cheetah:

Code: Alles auswählen

>>> from Cheetah.Template import Template
>>> template = """
... variable1 = $variable1
... variable2 = $variable2
... """
>>> t = Template(template)
>>> t.variable1 = 10
>>> t.variable2 = 20
>>> print t

variable1 = 10
variable2 = 20

>>>

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Beitragvon thelittlebug » Donnerstag 2. August 2007, 11:32

Danke gerold und birkenfeld,

ich denke ich werde die lösung mit "string.template" nehmen, scheint genau das zu können das ich wollte:

mein (test)template als datei "template" gespeichert

Code: Alles auswählen


<?

$conf['sowieso'] = 'YaTT (Yet another Template Test)';

$test = 'Hallo ²name';
$joeh[1]['lalelu'] = "Danke für\nden Tipp :)";

?>


der passende python code

Code: Alles auswählen

#!/usr/bin/python
from string import Template
import os

class Tmpl(Template):
   delimiter = '²'

print Tmpl(open('template','r').read()).safe_substitute({'name':'birkenfeld und gerold'})


und siehe da, es läuft :)
ich hab mich für "²" als delimiter entschieden da dieses zeichen kaum wo verwendet wird, und template angeblich schreit wenn leere delimiter in der datei herumliegen.
aber mit dem "²"er kann man das sehr leicht einfach definieren und jeder muss sich daran halten, das ist kaum ne einschränkung.

lgherby

Wer ist online?

Mitglieder in diesem Forum: /me