Seite 1 von 1

TXT Dateien lesen

Verfasst: Donnerstag 6. Dezember 2018, 18:29
von jgr
<r>Hallo Community,<br/>
<br/>
ich hätte da eine Frage: <E>:D</E> <br/>
<br/>
Ich habe einen kurzen Python Code geschrieben der auch funktioniert. Ich habe ein englisch deutsch dictonary geschrieben.<br/>
Das macht nichts anderes als eine TXT Datei mit <B><s></s>fobj<e></e></B> einzulesen und diese nach einen Wort das mittels Tastatur eingeben wird zu durchsuchen<br/>
und diese Zeile wo sich das Wort befindet (deutsches Wort) auszugeben. Funktioniert auch alles. Aber bei TXT datein mit ca. 65.000 Wörtern mozt der Complier das <br/>
er das file nicht lesen kann. Jetzt meine Frage ist die über fobj eingelesene Datei auf eine Größe beschrenkt na ja wahrscheinlich schon, aber wie groß darf die TXT<br/>
Datei in KB sein? Bzw. gibt es eine Funktion außer fobj um dateien einzulesen. Danke im Voraus<br/>
<br/>
GLG<br/>
<br/>
Joachim <E>:cry:</E></r>

Re: TXT Dateien lesen

Verfasst: Donnerstag 6. Dezember 2018, 19:21
von noisefloor
Hallo,

dein Post ist echt komisch formatiert und dadurch schlecht lesbar - was auch immer da passiert ist.

Zum Problem:
65k Wörter ist jetzt IMHO wirklich viel - wie groß ist die Datei denn?
Und du müsstest mal bitte die _komplette_ Fehlermeldung der Python Interpreters hier posten. "motzt rum" ist keine brauchbare Beschreibung.
Und deinen Code könntest du bitte auch mal posten, um zu sehen, ob da was faul ist.

Gruß, noisefloor

Re: TXT Dateien lesen

Verfasst: Donnerstag 6. Dezember 2018, 19:39
von nezzcarth
Was meinst du denn mit "mit fobj" eingelesen? Man sieht 'fobj' manchmal als (m.M.n. eher schlechten) Namen für Filehandles -- meinst du das? In dem Fall hast du die Datei vmtl. mit "open" eingelesen.

Ansonsten zwei allgemeine Anmerkungen: Große Dateien liest man wenn es geht nicht komplett in den Speicher ein, sondern zum Beispiel zeichen- oder zeilenweise und merkt sich nur das, was man wissen möchte. Das geht in Python sehr einfach. In deinem Fall iterierst du also z.B. nur über die Datei und gibst die betreffende Zeile aus, wenn es einen Treffer gibt. Für solche Suchaufgaben bietet sich (ab einer gewissen Größe) meiner Meinung nach ein invertierter Index, oder etwas Vergleichbares an.

Re: TXT Dateien lesen

Verfasst: Donnerstag 6. Dezember 2018, 20:14
von jgr
Hallo Leute,

keine Ahnung was da mit der Formatierung falsch gelaufen ist. Das sieht wie HTML Code aus. Aber danke für eure raschen Antworten. Bevor ich weiter herum experimentiere werde ich hier noch den Code und die Compiler Fehlermeldung rein geben. Ich habe den Code aktuell in der Firma. Werde in morgen posten.

glg

Joachim

Re: TXT Dateien lesen

Verfasst: Freitag 7. Dezember 2018, 07:57
von jgr
Hallo Leute,

anbei übermittle ich den Code und die Compiler meldung.

Code:

woerter={}
fobj = open("woerterbuch.txt", "r")
for line in fobj:
line = line.strip()
zuordnung = line.split(" ")
woerter[zuordnung[0]] = zuordnung[1]
fobj.close()
while True:
wort = input("Geben Sie ein Wort ein:")
if wort in woerter:
print("Das deutsche Wort lautet:", woerter[wort])
else:
print("Das Wort ist unbekannt")


Compiler Meldung:

>>>
RESTART: C:\Users\Joachim Gradischnik\Desktop\Programming\source_code\python\Dienstag_04122018\dictonary.py
Traceback (most recent call last):
File "C:\Users\Joachim Gradischnik\Desktop\Programming\source_code\python\Dienstag_04122018\dictonary.py", line 6, in <module>
woerter[zuordnung[0]] = zuordnung[1]
IndexError: list index out of range
>>>

Die Datei ist 2.666 Byte groß.

Ich hoffe ihr könnt was damit anfangen.

glg

Joachim

Re: TXT Dateien lesen

Verfasst: Freitag 7. Dezember 2018, 09:15
von __blackjack__
@jgr: Offenbar enthält die Datei mindestens eine Zeile bei der `zuordnung` nur ein Element hat. Also eine Zeile ohne mindestens ein Leerzeichen.

Das Programm würde zudem nicht mit Wortpaaren klar kommen in denen im Deutschen und/oder in der Fremdsprache Leerzeichen vorkommen, weil sich so etwas dann nicht mehr eindeutig auftrennen liesse. Statt selbst Formate zu erfinden, sollte man deshalb besser Standardformate verwenden. Hier beispielsweise eine CSV-Datei.

Re: TXT Dateien lesen

Verfasst: Freitag 7. Dezember 2018, 09:51
von jgr
Hallo Leute,

danke für die Information werde es mit einer CSV Datei versuchen. Das Programm funktioniert aber mit Wortgruppierungen.

GLG

Joachim

Ps: Vielleicht gibt es noch eine Antwort, danke

Re: TXT Dateien lesen

Verfasst: Freitag 7. Dezember 2018, 09:58
von __blackjack__
@jgr: Wie das denn bitte?

Re: TXT Dateien lesen

Verfasst: Freitag 7. Dezember 2018, 17:13
von noisefloor
Hallo,

die Fehlermeldung hat rein gar nichts mit der Dateigröße zu tun. Ehrlich gesagt weiß ich auch nicht wie man von "List Index out of range" auf einen Speicherfehler schließt. Den Grund für die Fehlermeldung hat dir __blackjack__ ja schon gesagt: die der Eingabedatei ist die Struktur irgendwo nicht wie von dir vorausgesetzt.

Gruß, noisefloor

Re: TXT Dateien lesen

Verfasst: Samstag 8. Dezember 2018, 04:01
von jgr
Hallo Leute,

ihr habt natürlich recht es hat nichts mit der größe der zugeführten Datenstruktur zu tun sondern mit dem aufbau der zugeführten Daten. Diese waren leider nur einzeilig das war der Fehler.
Danke für alles, Sorry das ich erst so spät geantwortet habe. Danke für die Hilfe jetzt funktioniert es einwandfrei.

glg

Joachim

Re: TXT Dateien lesen

Verfasst: Samstag 8. Dezember 2018, 10:39
von snafu
jgr hat geschrieben: Freitag 7. Dezember 2018, 09:51 Das Programm funktioniert aber mit Wortgruppierungen.
Falls damit Begriffe mit Leerzeichen gemeint sind: Ja, das wirft keinen Fehler, aber es gibt auch kein sinnvolles Ergebnis. Wenn du nach einem split(" ") auf den Index 0 und den Index 1 zugreifst, dann werden nur die ersten beiden Teile aus der Zeile ins Dictionary übernommen - egal was da steht. Und die restlichen Wörter der Zeile (also die übrigen Teile nach dem Splitten) werden ignoriert. Möglicherweise willst du deine Ergebnisse für Wortgruppen nochmal überprüfen...