Datei einlesen und in variablen speichern

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
alex87
User
Beiträge: 2
Registriert: Montag 17. Oktober 2011, 20:55

Montag 17. Oktober 2011, 21:02

Hallo bräuchte bei meinem Problem etwas hilfe. Habe eine .csv Datei dessen Daten mit einem ";" abgetrennt sind.

Code: Alles auswählen

source = open('testdatei.csv', mode='r')
for zeile in Datei:
    (eins, zwei)=zeile.split(';')
    
Jetzt kann ich zwar mit print(eins) in der for schleife zwar alle ausgeben lassen aber die datei hat etwa 80 zeilen. Die Ausgabe sieht dann so aus :

Code: Alles auswählen

user1
user2
user3
...
user80
Ich würde es gerne so machen, dass ich jeden "Datensatz" in einer Liste abspeicher. Aber wie mache ich das? Komme echt nicht mehr weiter
Also userdaten = [user1, user2, user3] Halt mit allen 80 drinnen. Hat jemand einen Tipp für mich ? :-D
BlackJack

Montag 17. Oktober 2011, 21:25

@alex87: Arbeite das Tutorial in der Dokumentation durch. Danach solltest Du das können.
alex87
User
Beiträge: 2
Registriert: Montag 17. Oktober 2011, 20:55

Montag 17. Oktober 2011, 21:26

Könntest du mir ein link zur dokumentation schicken?
problembär

Montag 17. Oktober 2011, 21:39

Ich mache das so:

Code: Alles auswählen

filehandle = file('testdatei.csv', 'r')
source = filehandle.readlines()
filehandle.close()
Lies' mal lieber ein systematisches Buch, z.B.:

http://abop-german.berlios.de/
BlackJack

Montag 17. Oktober 2011, 22:18

@alex87: http://docs.python.org/ sollte man eigentlich finden können.

@problembär: Statt `file` sollte man `open` verwenden. In Python 3.x gibt es `file` auch gar nicht mehr als „eingebauten“ Namen.
problembär

Dienstag 18. Oktober 2011, 09:16

BlackJack hat geschrieben:@problembär: Statt `file` sollte man `open` verwenden. In Python 3.x gibt es `file` auch gar nicht mehr als „eingebauten“ Namen.
Danke für den Hinweis. "open()" war ja ursprünglich der Standard, z.B. in C oder in Perl. Dann hieß es, in Python nehme man aber "file()". Und nun also doch wieder "open()".
Eigentlich schrieb ich "file()", um besonders modern und aktuell zu sein. Aber die Mode ändert sich offenbar schnell. Und in diesem Fall sogar wieder zurück.
Benutzeravatar
/me
User
Beiträge: 3191
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Dienstag 18. Oktober 2011, 10:21

problembär hat geschrieben:"open()" war ja ursprünglich der Standard, z.B. in C oder in Perl. Dann hieß es, in Python nehme man aber "file()". Und nun also doch wieder "open()".
Eigentlich schrieb ich "file()", um besonders modern und aktuell zu sein. Aber die Mode ändert sich offenbar schnell. Und in diesem Fall sogar wieder zurück.
file() kam mit 2.2 und ab 2.5 gab es dann die Empfehlung, für das Öffnen einer Datei doch lieber wieder open() zu verwenden. Es hat sich also tatsächlich vor 10 Jahren geändert, seit 5 Jahren ist allerdings open() wieder die geeignete Wahl. So schnell war die Umstellung dann doch wieder nicht, aber besonders glücklich auch nicht gerade.
BlackJack

Dienstag 18. Oktober 2011, 10:58

Wurde `file()` denn überhaupt mal *zum öffnen* von Dateien empfohlen? Das wurde als Datentyp eingeführt weil von `open` erben blöd aussieht, aber nicht um eine andere Möglichkeit zu haben Dateien zu öffnen.
Benutzeravatar
/me
User
Beiträge: 3191
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Dienstag 18. Oktober 2011, 11:47

BlackJack hat geschrieben:Wurde `file()` denn überhaupt mal *zum öffnen* von Dateien empfohlen?
Schau mal unter http://docs.python.org/release/2.2/lib/ ... funcs.html: "The file() constructor is new in Python 2.2. The previous spelling, open(), is retained for compatibility, and is an alias for file()."
BlackJack

Dienstag 18. Oktober 2011, 11:53

Hm, dann bin ich wohl von der Python-Newsgroup beeinflusst. Da hat solange ich mich zurück erinnern kann jeder der `file()` verwendet hat, eins auf die Finger bekommen, er solle doch bitte `open()` benutzen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dienstag 18. Oktober 2011, 12:33

problembär hat geschrieben:Ich mache das so:

Code: Alles auswählen

filehandle = file('testdatei.csv', 'r')
source = filehandle.readlines()
filehandle.close()
Besser - neben der `open`-Problematik - ist es aber so:

Code: Alles auswählen

with open("filename", "r") as filehandler:
     # tue irgend was mit filehandler
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3))
assert encoding_kapiert
Antworten