Seite 1 von 1
Datei Auslesen
Verfasst: Freitag 29. November 2013, 15:27
von Eisi
Nachdem ich nun Google durchsucht habe, sowie die Suchtfunktion in diesem Forum, musste ich feststellen doch nochmal zu fragen. :K
Ich habe eine .txt Datei und möchte gerne mit dem Inhalt dieser Datei arbeiten. Ich möchte speziell nach einer Nummer suchen und wenn sie da ist eine Rückmeldung erhalten, dass sich diese Nummer in dieser Datei befindet. Ich habe einige versuche gestartet die wahrscheinlich komplett falsch sind ^^. Vielleicht sogar wo sich diese Nummer befindet.
Code: Alles auswählen
try:
daten = open('test.txt','r')
text = daten.read()
if text == 123:
print('Ja')
else:
print('Nein')
daten.close()
except:
print('Kann Datei nicht öffnen.')
Das ist eine Version meines Versuchs. Kann mir vielleicht jemand nen guten denkanstoß geben?

Re: Datei Auslesen
Verfasst: Freitag 29. November 2013, 15:34
von /me
Eisi hat geschrieben:Das ist eine Version meines Versuchs. Kann mir vielleicht jemand nen guten denkanstoß geben?

Du vergleichst die komplette Rückgabe mit dem Wert 123. Du möchtest aber schauen, ob der String sich irgendwo in der Datei befindet. Damit kommen wir auch gleich zum zweiten Problem. Du vergleichst einen String mit einem Integer-Wert. Dabei wirst du nie eine Übereinstimmung bekommen.
Grundsätzlich ist ohnehin die Frage wie deine Datei strukturiert ist. Hast du einzelne Zeilen mit Nummern? Steht die Nummer irgendwo im Fließtext? Im zweiten Fall hast du ein zusätzliches Problem, da dann bei einer Suche nach '123' auch Werte wie '0123456' gefunden würden. Du müsstest dann den Inhalt der Datei noch passend aufteilen.
Re: Datei Auslesen
Verfasst: Freitag 29. November 2013, 15:44
von Eisi
Erstmal vielen Dank für die schnelle Antwort.
Die Datei ist Zeilenweise mit (für meine Zwecke) unnützem Zeug gefüllt. Es sind Wörter, Zahlen und Sonderzeichen enthalten.
Die Zahlen nach denen ich suche, sind immer gleich aufgeteilt. xxxxxx-xxxx wobei x für eine Ziffer steht.
Für mich ist auch erstmal nicht wichtig wo die Zahlen stehen, sondern ob sie enthalten sind oder nicht.
Re: Datei Auslesen
Verfasst: Freitag 29. November 2013, 15:57
von Eisi
Code: Alles auswählen
try:
daten = open('test.txt','r')
text = daten.read()
f = text.find('119102')
daten.close
if f >= 0:
print('Ja')
else:
print('Nein')
except:
print('Kann Datei nicht öffnen.')
Nun dieser Code funktioniert. Aber wenn die Zahl 11910 lautet sagt er auch noch True. Da fehlt wohl noch was
Re: Datei Auslesen
Verfasst: Freitag 29. November 2013, 16:02
von /me
Eisi hat geschrieben:Die Zahlen nach denen ich suche, sind immer gleich aufgeteilt. xxxxxx-xxxx wobei x für eine Ziffer steht.
Das ist dann keine Zahl im klassischen Sinne.
Eisi hat geschrieben:Für mich ist auch erstmal nicht wichtig wo die Zahlen stehen, sondern ob sie enthalten sind oder nicht.
Ich gehe jetzt davon aus, dass es sich um eine Textdatei mit Zeilen handelt. Dann würde ich die Datei öffnen, zeilenweise durchgehen um nicht die komplette Datei im Speicher halten zu müssen und in jeder Zeile nach dem Wert suchen. Das with-statement stellt dabei sicher, dass die Datei am Ende des with-Blocks automatisch geschlossen wird. Das hat seine Vorteile, vor allem wenn vergisst, sie wieder zu schließen (Hint:
close ist nicht das gleiche wie
close())
Code: Alles auswählen
def value_in_file(filename, value):
with open(filename) as daten:
for line in daten:
if value in line:
return True
return False
if value_in_file('file.txt', '123456-7890'):
print('OK')
Re: Datei Auslesen
Verfasst: Freitag 29. November 2013, 16:15
von EyDu
Das kann man noch ein wenig zusammenfassen:
Code: Alles auswählen
def value_in_file(filename, value):
with open(filename) as daten:
return any(value in line for line in daten)