Verfasst: Mittwoch 19. November 2003, 17:39
Gib mal bitte die genaue Fehlermeldung an... in der Zeile mit open stimmt was nicht, da hat Python schon recht, aber ich denk mal viel eher, das "name" nicht definiert ist 

Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
def Seite(x):
f =open ("C:/windows/temp/test.txt", 'r')
zaehler = 0
z1 = 0
z2 = 0
for line in f.readlines():
linearray = line.split("|")
if linearray[3] == " view " and linearray[4].strip() == x:
zaehler += 1
if linearray[6].startswith(' 193.175.240') or linearray[6].startswith(' 172.30.30') or linearray[6].startswith(' 192.168'):
z1 += 1
else:
z2 +=1
f.close()
return "Auf die Seite ", x,"wurde",zaehler,"mal zugegriffen. "" Intern: ",z1," Extern:",z2
nein -- Python ist das egal, es funktionieren beide Varianten.Dookie hat geschrieben:Musst Du unter Windows nicht den Backslash nehmen statt dem Slash im Pfad?
Sieht das dann nicht eher so aus, wenn schon Backslash?gast hat geschrieben:hi,
funzt das sogrußCode: Alles auswählen
f =open (r'C:/windows/temp/test.txt', 'r')
Code: Alles auswählen
f =open (r'C:\windows\temp\test.txt', 'r')
Aber kommt denn die Fehlermeldung überhaupt von Python? Die lautet doch in der Regel IOError: [Errno 2] No such file or directory: 'foo'. Hab' aber von Zope keine Ahnung.Milan hat geschrieben:nein -- Python ist das egal, es funktionieren beide Varianten.
Bitte immer genau angeben. Wenn Du schreibst 'bekomm ich immer die Fehlermeldung "Can't find such file!"', dann geht man davon aus, das die Meldung auch exakt so lautet.Calanetics hat geschrieben:Ja der Fehler kommt von Python genau der den dun genannt hast.
Code: Alles auswählen
def Seite(x):
f =open ("C:/windows/temp/test.txt", 'r')
zaehler = 0
z1 = 0
z2 = 0
for line in f.readlines():
linearray = line.split("|")
if linearray[3] == " view " and linearray[4].strip() == x:
zaehler += 1
if linearray[6].startswith(' 193.175.240') or linearray[6].startswith(' 172.30.30') or linearray[6].startswith(' 192.168'):
z1 += 1
else:
z2 +=1
f.close()
return "Auf die Seite ", x,"wurde",zaehler,"mal zugegriffen. "" Intern: ",z1," Extern:",z2
Wäre schon interessant, wodran es nun gelegen hat.Calanetics hat geschrieben:Danke nochmal für die Hilfe hab jetzt das Problem hinbekommen und da hat besonders Voges sein Tipp geholfen.
An den "Klammern und Hochkommas" solltest Du eigentlich sofort erkennen, dass Du es nicht mit einem String, sondern mit einem Tupel zu tun hast. return macht etwas deutlich anderes als print (siehe Doku).Calanetics hat geschrieben: ('Auf die Seite ', Seite,'wurde',zaehler,'mal zugegriffen. '' Intern: ',z1,' Extern:',z2')
Ich hab schon ne Menge versucht damit diese Klammern und hochkommas verschwinden. in der python shell klappt es aber dort kann man auch return weglassen und brauch nur print schreiben.
Code: Alles auswählen
return "Auf die Seite "+str(x)+" wurde "+str(zaehler)+" mal zugegriffen. Intern: "+str(,z1)+" Extern:"+str(z2)
Code: Alles auswählen
return "Auf die Seite %s wurde %i mal zugegriffen.\nIntern: %i Extern: %i" % (x, zaehler, z1, z2)
Code: Alles auswählen
import string
def Monat(x):
d1 = {'September' : 'C:/windows/temp/test.txt',
'Oktober' : 'C:/windows/temp/test1.txt'}
f =open (d1[x], 'r')
d ={}
d2 = []
for line in f.readlines():
linearray = line.split("|")
if linearray[3] == " view " :
d[linearray[4]] = 0
for s in d.keys():
zaehler = 0
z1 = 0
z2 = 0
f.seek(0)
for line in f.readlines():
linearray = line.split("|")
if linearray[3] == " view " and linearray[4] == s:
zaehler += 1
if linearray[6].startswith(' 193.175.240') or linearray[6].startswith(' 172.30.30') or linearray[6].startswith(' 192.168'):
z1 += 1
else:
z2 +=1
d2.append('Auf die Seite %s wurde %i mal zugegriffen werden. Intern: %i Extern: %i' % (s, zaehler, z1, z2))
return string.join(d2, '\n')
Wo erfolgt die Ausgabe? Wenn in einem Webbrowser eingebettet in HTML-Code, dann erzeugst Du Zeilenumbrüche nicht mit \n, sondern mit <br>.Calanetics hat geschrieben:Und zwar geb ich ja eine Liste zurück die ich schon nen bißche bearbeite bei der Ausgabe.
Doche leider macht er keine Zeilenumbrüche nach jeder Zeile obwohl ich doch \n angeb!
Code: Alles auswählen
"<br/>\n".join(d2)
Bitte immer präzise angeben, welche Zeile den Fehler verursacht. Du greifst ja an einigen Stellen auf einzelne Listenelemente zu und eben einmal 'hinter' die Liste.Calanetics hat geschrieben:List out of Range.