Seite 1 von 1

Datei Durchsuchen mach nicht was ich will

Verfasst: Samstag 26. Juli 2008, 14:19
von Andyh
Hallo
Ich habe das hier geschrieben:

Code: Alles auswählen

datei = file("c:\\Python25\\ersetzten\\a.pyw", "rw")

for line in datei.readlines():
    print line
print 1
datei.close()

datei = file("c:\\Python25\\ersetzten\\a.pyw", "rw")

for line in datei.readlines():
    if line == "localhost = socket.gethostbyname(socket.gethostname())":
        print "##################################gefunden"
        print "##################################gefunden"
        print "##################################gefunden"
        print "##################################gefunden"
        print "##################################gefunden"
        print "##################################gefunden"
        print "##################################gefunden"
    print line
print 2
datei.close()

datei = file("c:\\Python25\\ersetzten\\a.pyw", "rw")

for line in datei.readlines():
    print line
print 3
datei.close()
Nur passiert nichts wenn die Zeile überlesen wird.

Ich öffen die Datei Dreimal weil, ich sie beim

1. mal nur sehen möchte
2. mal umschreiben
3. mal zum Kontrollieren

Es gib schon bessere Methoden was in einer Datei zu suchen, ich möchte trotzdem gerne den fehler wissen.

Gruß
Andyh

Verfasst: Samstag 26. Juli 2008, 15:04
von epsilon
Es gib schon bessere Methoden was in einer Datei zu suchen, ich möchte trotzdem gerne den fehler wissen.
Der Fehler ist, dass du das \n in der if-Abfrage vergessen hast:

Code: Alles auswählen

if line == "localhost = socket.gethostbyname(socket.gethostname())\n":
Zu deinem Skript:
Soweit ich das sehe, gibt es kein 'rw'. Wenn du die file mit 'rw' öffnest, wird die file in Wirklichkeit nur zum lesen geöffnet. Du kannst entweder 'r+' oder 'w+' verwenden. Bei 'w+' wird die file überschrieben, wenn es sie bereits gibt.
Ich öffen die Datei Dreimal weil
Wieso versuchst du die Datei erst read-write zu öffnen, und schließt sie dann wieder nach jedem Schritt. Verwend' doch einfach file.seek(0), um wieder an den Anfang der file zu springen.

Und wenn du schon dreimal die file öffnest, wieso verwendest du dann keine Variable für den Dateinamen? Find' ich übersichtlicher...

Edit:

statt 'for line in datei.readlines():' verwende besser 'for line in datei:'. Das ist Ressourcen-schonender, weil die file nicht komplett eingelesen wird.

Verfasst: Samstag 26. Juli 2008, 15:47
von Andyh
Hallo
Danke, ist ja mal wieder simpel gewesen.
Ja das Programm ist echt nicht schön naja wahr auch nur zum testen da, aber gut erklärt.

Gruß
Andyh