Datei zeilenweise in Funktion verwenden

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
shoubi
User
Beiträge: 3
Registriert: Montag 17. Juli 2017, 08:50

Hallöchen,
ich stehe vor einer Aufgabe, die mich etwas zum verzweifeln bringt. Ich bin erst seit einer Woche mit Python zugange und deswegen fehlen noch einige Kenntnisse. Meine Frage wäre folgende:
Ich habe eine Funktion geschrieben, die es mir ermöglicht zwei Sachen (Sequenzen)einzugeben, diese zu benutzen und gegeneinander aufzutragen (DotPlot).
Nun soll aber noch eingebaut werden, dass man diese beiden Sequenzen aus einer eigenen Datei ausliest und für die Funktion verwendet.
Also ich habe jetzt eine Datei mit zwei Zeilen (den zwei Sequenzen). Ich möchte nun, dass diese Datei zeilenweise ausgelesen wird und ich diese auch wieder zeilenweise weiter benutzen kann für meine Funktion quasi als "zeile1" und "zeile2".

Vielen Dank im Voraus! :)
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@shoubi: Du willst nicht, dass eine Funktion etwas zeilenweise benutzt, sondern klar zwischen Verarbeitung (dotplot) und Einlesen trennen. Also überlege Dir, wie die Funktion die Daten braucht, also, wie Du sie bereit stellen mußt. Wenn Du numpy benutzt, ist das Einlesen ein Einzeiler, sonst mußt Du Dir überlegen, wie Du eine Zeile in Zahlen aufspalten kannst. Was hast Du über Dateien in Deinem Kurs schon gelernt?
shoubi
User
Beiträge: 3
Registriert: Montag 17. Juli 2017, 08:50

Ich bin nur soweit gekommen, dass ich die Datei auslesen und im Terminal zeilenweise wieder ausgeben kann. Wie man auf Dateien zugreift weiß ich. Also das wieder einlesen und ausgeben klappt. Auch wie ich eine neue Datei erstelle, indem ich den Text in das Terminal eingebe.

Damit ich die Sequenzen benutzen kann, muss ich die ausgegebene Sequenz als Liste bekommen bzw sie dann in eine Liste umwandeln.
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@shoubi: dann weißt Du ja schon, wonach Du suchen mußt: eine eingelesene Zeile (String) in eine Liste umwandeln. Dazu kannst Du Dir anschauen, welche Methoden für Strings existieren.
shoubi
User
Beiträge: 3
Registriert: Montag 17. Juli 2017, 08:50

Ja, das weiß ich ja wie das geht. Ich weiß nur nicht, wie man das Programm dazu bringt die Zeilen einzeln zu betrachten.
Also von wegen "Nehme Zeile 1 aus der Datei und mache Liste 1 daraus".
Die befehle str() und list() kenne ich bereits, doch weiß ich nicht, wie ich sage das er zeilenweise jeweils eine Liste erstellt also:
l1=list(zeile1)
l2=list(zeile2)
BlackJack

@shoubi: Dateien sind iterierbar, das heisst mit der `next()`-Funktion bekommt man die jeweils nächste Zeile vom Dateiobjekt. Die erste Zeile einer Datei bekommt man also in dem man die Datei zum lesen öffnet und dann `next()` mit dem Dateiobjekt aufruft. Der nächste Aufruf liefert dann die zweite Zeile, und so weiter.

Code: Alles auswählen

>>> f = open('elements.txt')
>>> next(f)
'aluminium\n'
>>> next(f)
'argon\n'
>>> next(f)
'astatine\n'
>>> f.close()
Antworten