Datei Durchsuchen mach nicht was ich will

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
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Samstag 26. Juli 2008, 14:19

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
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
epsilon
User
Beiträge: 71
Registriert: Freitag 20. Juni 2008, 19:48

Samstag 26. Juli 2008, 15:04

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.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Samstag 26. Juli 2008, 15:47

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
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten