Hallo zusammen, irgendwie stehe ich auf dem Schlauch.
Ich möchte eigentlich nur ein csv-File lesen, bekomme aber immer eine Fehlermeldung.
Ich habe es gemacht, wie die Beispiele in diesem Forum.
Das csv-File liegt im selben Ordner wie das Projekt
def readCSV(csv):
writeHistory('csv-File lesen...')
with open('VNXA99.csv', 'r') as file_raw:
data_read = csv.reader(file_raw, delimiter=';')
for zeile in data_read:
print(zeile)
Fehlerhafte Zeile
data_read = csv.reader(file_raw, delimiter=';')
Fehlermeldung
AttributeError: 'str' object has no attribute 'reader'
Gruss
Thomas
csv lesen geht nicht
Naja, du nimmst ``csv`` als Argument der Funktion an und gleichzeitig willst du den ``reader`` des ``csv``-Moduls aufrufen. An der Stelle wird der Modul-Import, den ich hier mal voraussetze, überschrieben durch das Funktionsargument. Letzteres müsstest du einfach umbenennen in ``csv_file`` oder ähnliches. Dann wird es funktionieren.Hellstern hat geschrieben: ↑Freitag 26. April 2024, 17:36Fehlerhafte ZeileCode: Alles auswählen
def readCSV(csv): writeHistory('csv-File lesen...') with open('VNXA99.csv', 'r') as file_raw: data_read = csv.reader(file_raw, delimiter=';') for zeile in data_read: print(zeile)
FehlermeldungCode: Alles auswählen
data_read = csv.reader(file_raw, delimiter=';')
AttributeError: 'str' object has no attribute 'reader'
Im Übrigen ist dir hoffentlich klar, dass du im gezeigten Code das Funktionsargument gar nicht verwendest...
Zuletzt geändert von snafu am Freitag 26. April 2024, 17:48, insgesamt 1-mal geändert.
- __blackjack__
- User
- Beiträge: 13438
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Hellstern: Tja ganz offensichtlich ist der Name `csv` in der Funktion an eine Zeichenkette gebunden. Wie soll der dann auch gleichzeitig noch für das Modul stehen?
Namen werden in Python übrigens klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).
Was ist denn überhaupt ein `csv`? Wäre es nicht sinnvoller das `csv_filename` zu nennen, oder nur `filename`, denn der CSV-Teil wird ja durch den Funktionsnamen schon klar.
Beim `csv`-Modul muss man beim öffnen der Datei ``newline=""`` angeben. Siehe Dokumentation des Moduls. Und beim öffnen von Textdateien sollte man die Kodierung explizit angebeben. Sonst muss man hoffen, dass die ”Systemkodierung” zufällig die richtige ist.
`file_raw` ist irgendwie Yoda, denn das wäre eher ein `raw_file`. Wobei das `raw` dieses Dateiobjekt ja nicht irgendwie gegen ein anderes abgrenzt, also reicht `file` aus.
`data_read` ist komisch bis falsch. Da sind noch keine gelesenen Daten, das ist ein iterierbares Objekt das die Datensätze erst liest wenn die angefragt werden, und dann auch jeden einzeln. `zeile` stimmt an sich als Name, aber warum ist *der* Name dann in Deutsch während alle anderen Englisch sind? Das wäre konsistenterweise also `row`.
Namen werden in Python übrigens klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).
Was ist denn überhaupt ein `csv`? Wäre es nicht sinnvoller das `csv_filename` zu nennen, oder nur `filename`, denn der CSV-Teil wird ja durch den Funktionsnamen schon klar.
Beim `csv`-Modul muss man beim öffnen der Datei ``newline=""`` angeben. Siehe Dokumentation des Moduls. Und beim öffnen von Textdateien sollte man die Kodierung explizit angebeben. Sonst muss man hoffen, dass die ”Systemkodierung” zufällig die richtige ist.
`file_raw` ist irgendwie Yoda, denn das wäre eher ein `raw_file`. Wobei das `raw` dieses Dateiobjekt ja nicht irgendwie gegen ein anderes abgrenzt, also reicht `file` aus.
`data_read` ist komisch bis falsch. Da sind noch keine gelesenen Daten, das ist ein iterierbares Objekt das die Datensätze erst liest wenn die angefragt werden, und dann auch jeden einzeln. `zeile` stimmt an sich als Name, aber warum ist *der* Name dann in Deutsch während alle anderen Englisch sind? Das wäre konsistenterweise also `row`.
Code: Alles auswählen
**** COMMODORE 64 BASIC V2 ****
64K RAM SYSTEM 38911 BASIC BYTES FREE
CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█