Wo ist hier ein Fehler?

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
asdfgqw
User
Beiträge: 33
Registriert: Samstag 3. Februar 2007, 10:45

Samstag 3. Februar 2007, 19:09

In Zeile 22 soll ein Fehler sein. In Zeile 22 (zweiundzwanzig). Ich kenn mich mit python nicht aus. Dies ist ein copy und paste Beispiel das ich teste. Zeile 22 gibt es nicht. Also muß es 21 sein. Sieht jemand was? Mein vi markert die beiden letzten Klammern mit dem t rot an. Was hat das zu bedeuten. Das Original findet ihr hier:

http://we-are-teh-b.org/~tim/index.php?q=node/280

Code: Alles auswählen

from Cheetah.Template import Template
import sys
"""
Die Einstellungen:
template - Die Vorlagendatei, so sehen die Seiten später aus.
output - Hier werden die Seiten hingeneriert
templateDir - Hier sind die Inhaltsdateien drinne
"""
template = "template.html"
output = "output/"
templateDir = "template_files/"
myFile = open(template, 'r')
templateDef = myFile.read()
templateFile = sys.argv[1]
templateFileContent = (open(templateDir + sys.argv[1] + '.html')).read()
title = (templateFile.split("\n"))[0]
inhalt = (templateFile.split("\n",1))[1]
nameSpace = {'title': title, 'inhalt': inhalt}
t = Template(templateDef, searchList=[nameSpace])
myTemplate = open(output + sys.argv[1] + ".html", "w")
myTemplate.write(str(t)
Edit (Leonidas): Code-Highlighting eingeschaltet.
Edit (Leonidas): Verschoben.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Samstag 3. Februar 2007, 19:20

in der letzten Zeile fehlt eine Klammer

Code: Alles auswählen

myTemplate.write(str(t))
Stephan
asdfgqw
User
Beiträge: 33
Registriert: Samstag 3. Februar 2007, 10:45

Sonntag 4. Februar 2007, 14:10

Danke für die Hilfe.

Zwei Fragen habe ich jetzt noch:

1. Wenn ich das script unter Windows laufen lasse:

python blabla > D:\Fehler.txt

dann habe ich die Fehler immer in eine Datei schreiben lassen. Mit Python funktioniert das nicht. Wie macht Ihr denn das?

2. Der Fehler lautet:

Code: Alles auswählen

File "genSite.py", line 17, in ?
  inhalt= (templateFile.split("\n",1))[1]
indexError: list index out of range
Was will er mir damit sagen? Wie gesagt ich habe die scripte per copy und paste kopiert weil mir das sehr simpel erschien. Offenbar sceint der Autor, sodern er das selber geschrieben hat, niemals selber getestet zu haben.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Sonntag 4. Februar 2007, 14:14

asdfgqw hat geschrieben:Danke für die Hilfe.

Zwei Fragen habe ich jetzt noch:

1. Wenn ich das script unter Windows laufen lasse:

python blabla > D:\Fehler.txt

dann habe ich die Fehler immer in eine Datei schreiben lassen. Mit Python funktioniert das nicht. Wie macht Ihr denn das?
Ich verstehe nicht ganz, wo der Unterschied zwischen "unter Windows" und "Mit Python" ist.
2. Der Fehler lautet:

Code: Alles auswählen

File "genSite.py", line 17, in ?
  inhalt= (templateFile.split("\n",1))[1]
indexError: list index out of range
Was will er mir damit sagen? Wie gesagt ich habe die scripte per copy und paste kopiert weil mir das sehr simpel erschien. Offenbar sceint der Autor, sodern er das selber geschrieben hat, niemals selber getestet zu haben.
Naja, der obige Befehl teilt "templateFile" am ersten Zeilenende in zwei Teile auf. "templateFile" ist aber ein Kommandozeilenargument, ich vermute daher stark, dass "templateDef" gemeint ist.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 4. Februar 2007, 14:43

birkenfeld hat geschrieben:Ich verstehe nicht ganz, wo der Unterschied zwischen "unter Windows" und "Mit Python" ist.
Es gibt keinen Unterschied, weil das weder mit Python noch mit Windows zu tun hat. Es geht darum, dass der Redirection-Operator > nur stdout weiterleitet, nicht aber stderr, wo die Exceptions ausgegeben werden. Wie man stderr weiterleitet beschreibt Microsoft in der Windows XP Dokumentation.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Samstag 17. Februar 2007, 11:03

Leonidas hat geschrieben:Wie man stderr weiterleitet beschreibt Microsoft in der Windows XP Dokumentation.
Das geht unter Windoze eigentlich genau wie unter Linux...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 17. Februar 2007, 11:40

nkoehring hat geschrieben:Das geht unter Windoze eigentlich genau wie unter Linux...
Einige Shells haben eine andere und/oder erweiterte Syntax, siehe zshs ``2>>``-Operator.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Samstag 17. Februar 2007, 11:59

Ja da hast du auch wieder recht...
[OFFTOPIC]
sag mal Leonidas... du benutzt scheinbar ein Linux, die ZShell, VIM, Python... gibts denn irgendwas das wir nicht beide benutzen ^^
[/OFFTOPIC]
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
lunas
User
Beiträge: 87
Registriert: Samstag 2. Dezember 2006, 10:56

Samstag 17. Februar 2007, 15:38

Leonidas hat geschrieben: Einige Shells haben eine andere und/oder erweiterte Syntax, siehe zshs ``2>>``-Operator.
Die Command Shell von WinXP kann das auch...

Code: Alles auswählen

python myscript.py 2>sterr.txt
sollte also auch unter Windows funktionieren.

Edit:
Leonidas hat geschrieben:Wie man stderr weiterleitet beschreibt Microsoft in der Windows XP Dokumentation.
Ups, habe den Hinweis wohl übersehen... :oops:
Antworten