python auf mac

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.
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

so sieht die datei csvreader.py aus, die obige fehlermeldung erzeugt

Code: Alles auswählen

import csv
reader = csv.reader(open("/Users/macbook/Desktop/versuch.csv","rb"), delimiter=";")
	for row in reader:
		print row
ist das richtig für python 2.3?
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

Sieht gut aus (laut http://www.python.org/doc/2.3.5/ref/for.html), allerdings ungetestet, da ich keine 2.3er Version mehr laufen habe.

Kürze Deine CSV-Datei mal auf 3 Zeilen und teste, ob der Fehler weiterhin auftritt. Wenn ja, zeige uns die Zeilen. Falls nicht, versuche es solange mit anderen Zeilen, bis der Fehler auftritt. Dann haben wir den Übeltäter und können schauen, was schief gelaufen ist.
Mephisto
User
Beiträge: 28
Registriert: Mittwoch 17. Januar 2007, 15:52

Das sieht nicht gut aus - das `for` darf nicht eingerückt sein, d.H. auf der selben "Ebene" wie reader = ...

lg mephisto
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

aargh! :roll:
danke für das Abnehmen der Tomaten...
:oops:

ich hatte mich zu sehr auf die 2.3er Kompatibilität gestürzt und nicht auf profane Syntaxfehler geachtet. Trotzdem unentschuldbar. Danke Mephisto!
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

habe die einrückung korrigiert. jetzt sieht es so aus:

Code: Alles auswählen

import csv
reader = csv.reader(open("/Users/macbook/Desktop/versuch.csv","rb"), delimiter=";")
for row in reader:
	print row
jetzt sieht die fehlermeldung so aus:
Traceback (most recent call last):
File "csvreader.py", line 3, in ?
_csv.Error: newline inside string
wenn ich wie empfohlen, linie um linie weglasse, um zu kontrollieren was er tut, dann tut er dann auf zeile 2 eben gar nichts mehr - weils nichts zu tun gibt. es muss irgendwie am befehl
for row in reader:
liegen - weil so viele möglichkeiten was falsch zu machen gibts ja wohl bei 4 zeilen gar nicht - oder?
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

goldfisch hat geschrieben:wenn ich wie empfohlen, linie um linie weglasse, um zu kontrollieren was er tut, dann tut er dann auf zeile 2 eben gar nichts mehr - weils nichts zu tun gibt.
Du sollst die Zeilen der CSV-Datei dezimieren. Ich vermute einen Datenfehler.
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

die Zeilen der CSV-Datei dezimieren
sorry für die blöde frage - aber was heisst dezimieren?
die excel-datei als csv gespeichert sieht folgendermassen aus:
vorname;nachname;geburtsdatum;wohnort;haarfarbe
Daniel;Zakowski;hallo;Sibnslaken;Schwarz
David;Schönauer;hallo;Aachen;Braun
Sebastian;Sentner;hallo;Sydney;Dunkelblond
ist ein versuchsbeispiel...

wo wäre dann der datenfehler? umlaute?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

goldfisch hat geschrieben:sorry für die blöde frage - aber was heisst dezimieren?
Das ist eine von Konsul Appius Claudius Sabinus eingeführte Strafmaßnahme, bei der jeder zehnte Mann einer römischen Legion getötet wird. Hätte dir bestimmt auch die Wikipedia sofort mitgeteilt :)

Stefan
kaschu
User
Beiträge: 25
Registriert: Sonntag 25. Februar 2007, 14:15

goldfisch hat geschrieben:
die Zeilen der CSV-Datei dezimieren
sorry für die blöde frage - aber was heisst dezimieren?
die excel-datei als csv gespeichert sieht folgendermassen aus:
vorname;nachname;geburtsdatum;wohnort;haarfarbe
Daniel;Zakowski;hallo;Sibnslaken;Schwarz
David;Schönauer;hallo;Aachen;Braun
Sebastian;Sentner;hallo;Sydney;Dunkelblond
ist ein versuchsbeispiel...

wo wäre dann der datenfehler? umlaute?
frag nicht uns, sondern probiere es aus! Läuft Dein Programm mit den 4 Zeilen da oben, oder wirft es den Fehler?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

sma hat geschrieben: Das ist eine von Konsul Appius Claudius Sabinus eingeführte Strafmaßnahme, bei der jeder zehnte Mann einer römischen Legion getötet wird. Hätte dir bestimmt auch die Wikipedia sofort mitgeteilt :)
:lol: Man sollte sich öfter mal über den Ursprung einiger Wörter Gedanken machen :)
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:
goldfisch hat geschrieben:sorry für die blöde frage - aber was heisst dezimieren?
Das ist eine von Konsul Appius Claudius Sabinus eingeführte Strafmaßnahme, bei der jeder zehnte Mann einer römischen Legion getötet wird. Hätte dir bestimmt auch die Wikipedia sofort mitgeteilt :)
*rofl* Für die Antwort sollte man dir nen Orden verleihen. :)
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

philosophisch super - konstruktiv mangelhaft - allgemeinwissen genial - verwertbarkeit null!

ich brauche keine aufklärung über das leben - ich brauche konstruktive hinweise in bezug auf python - was meines erachtens teilweise etwas weit weg vom leben ist... :lol:
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

goldfisch hat geschrieben:wo wäre dann der datenfehler? umlaute?
Hast du denn mal eine Probedatei ohne Umlaute probiert?
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

ja habe ich. auch mit zahlen hab ichs probiert. hilf nichts. es liegt also nicht an den umlauten.
es kommt wieder die meldung:
Traceback (most recent call last):
File "csvreader.py", line 3, in ?
_csv.Error: newline inside string
mit line 3 meint er zeile 3 im script - und die lautet
for row in reader
damit muss was falsch sein - aber was?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Das Problem liegt schon an der cvs-Datei. Eine Idee die ich habe, ist, dass wenn du deine csv-Datei aus Exel speicherst (also unter WIndows), du als Zeilenumbruch-Zeichen \r\n hast, waehrend der Mac, wo du das Python-Script laufen laesst, meines Wissens \r verwendet. Vlt. bringt das den csv-Reader durcheinander?

Zum einen koenntest du nochmal ausprobieren, wenn du einfach selbst eine kurze CVS-Datei auf dem Mac mit einem Texteditor schreibst und speicherst, z.B. kannst du die CVS-Datei, die du hier gepostet hast, per Copy & Paste uebernehmen (am Besten erstmal was ohne Umlaute). Wenn das auch nicht funktioniert, koennte man mal eine csv-Datei von Python erstellen lassen und schauen, wie die Datei aussieht (vor allem die Zeilenumbrueche).

Dann gibt es theoretisch auch noch die Moeglichkeit, beim csv-Reader das Zeilenumruchzeichen mitzugeben, aber die Doku klingt da nicht sehr vielversprechend:
http://docs.python.org/lib/csv-fmt-params.html hat geschrieben:lineterminator
The string used to terminate lines produced by the writer. It defaults to '\r\n'.

Note: The reader is hard-coded to recognise either '\r' or '\n' as end-of-line, and ignores lineterminator. This behavior may change in the future.

:K Du kannst es natuerlich trotzdem einfach mal ausprobieren.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

hey wow - jetzt gehts!!!
ich habe die csv-datei in textwrangler geschrieben, mit kommas getrennt und dort unicode utf-8 eingestellt. jetzt klappts - er gibt die daten in der konsole aus!
['\xef\xbb\xbfname', ' vorname', ' wohnort', ' land\xe2\x80\xa8meier', ' hugo', ' olten', ' schweiz\xe2\x80\xa8huber', ' alfons', ' genf', ' schweiz]
allerdings gibt er noch ein paar hyroglypen aus, die ich nicht geschrieben habe. damit meine ich
['\xef\xbb\xbfname', ' vorname', ' wohnort', ' land\xe2\x80\xa8meier'.....

was bedeutet das?
meine koordinatenliste mit x, y, z gibt er folgendermassen aus:
['\xef\xbb\xbf15.5;14.9;25.9\xe2\x80\xa819.5;14.4;23.35\xe2\x80\xa817;10.6;26.6\xe2\x80\xa818;8.1;27.75\xe2\x80\xa817;7.05;28.7\xe2\x80\xa822;7.55;27.75\xe2\x80\xa823;3.05;28.4\xe2\x80\xa826;-1;27.85\xe2\x80\xa824.5;0.8;20.9\xe2\x80\xa825.5;1.15;14.55\xe2\x80\xa820;4.45;13.05\xe2\x80\xa821;13.1;16.25\xe2\x80\xa819.5;11.9;14.2\xe2\x80\xa814.5;20.25;13.45\xe2\x80\xa88;20.25;14.7\xe2\x80\xa89;19.7;15.35\xe2\x80\xa88;19.25;17.85\xe2\x80\xa8.....
auch hier stehen die einträge zwischen '\xef\xbb\xbf - dann kommen die zahlen, und dann wieder - \xe2\x80\xa8.

was ich am erstaunlichsten finde ist, dass ich den befehl delimiter=";" nicht eingeben muss, egal ob es sich in der csv-datei um kommas oder semikolons handelt.
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

jetzt klappts - nachdem ich in textwrangler auf unix(FL) umgeschaltet habe funktionierts auch mit der ausgabe. er gibt mir die x, y, z koordinaten folgendermassen aus:
['15.5', '14.9', '25.9']
['19.5', '14.4', '23.35']
['17', '10.6', '26.6']
['18', '8.1', '27.75']
['17', '7.05', '28.7']
jetzt muss ich das nur noch als zeichnung in blender reinkriegen und ich bin wunschlos glücklich (na jedenfalls fast...)
:D
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

ich dachte ich kriege das irgendwie hin - die koordinaten jetzt in blender zu bringen - aber ich kriege es nicht hin. kann mir jemand dabei helfen?

ich habe ziemlich viel probiert und habe jetzt dermassen einen hirnisturm, dass ich nicht mehr weiss wo oben und unten ist - hilfe!
BlackJack

Wenn ich mal raten müsste und die Trippelschitte bisher zugrunde lege: Dir ist klar, dass Du da Listen mit *Zeichenketten* hast, die Du in *Zahlen* umwandeln musst?

Kannst Du eigentlich Python? Also ich meine ohne Blender? Hast Du das Tutorial aus der Dokumentation mal durchgearbeitet?
goldfisch
User
Beiträge: 52
Registriert: Sonntag 17. August 2008, 19:52

nein ich kann python nicht. ich habe mir die dokumentation mal vorgenommen, bin dann aber über die verschiedenen versionen gestolpert. mich interessiert python vor allem im zusammenhang mit blender, weil ich dann ein visuelles ergebnis bekomme und sehe, was passiert.

ich finde es schwierig, das richtige tutorial zu finden. aus all den diversen schnipseln, die ich gefunden habe, funktionierts nur zum teil - wegen versionsunterschieden / synthax - dadurch trete ich oft an ort und es ist etwas frustrierend.
mein problem mit dem script in blender zu bekommen, habe ich inzwischen auf holzfällerart wahrscheinlich etwas unelegant gelöst aber es funktioniert.

ein wirklich gutes tutorial für python 2.3.5 zusammen mit blender 2.4.5 - so ein richtiger idealfall wo das zeug zusammenpasst und auch funktioniert - das wäre cool!
Antworten