Seite 4 von 6

Verfasst: Montag 25. August 2008, 22:16
von BlackJack
Pfade, der aktuelle Pfad eines Prozesses, und das `/` das Wurzelverzeichnis ist, ist eigentlich auf Windows, Linux, und Mac gleich. Bei Windows mit der Einschränkung, dass es pro Laufwerk ein Wurzelverzeichnis gibt, und nicht ein "globales", aber das ist hier ja nicht wichtig.

Insgesamt fehlen Dir offensichtlich ein paar Wissensgrundlagen wie Dein Betriebssystem unter der grafischen Oberfläche funktioniert. Das ist im Grunde ein BSD, also nicht so weit von Linux entfernt, und es ist kein spezielles Python-Wissen.

Verfasst: Dienstag 26. August 2008, 05:53
von kaschu
Ich arbeite mit einem Mac. Und ich kann Dir versichern, der Mac ist nicht "teilweise abgeschlossen".

Was genau ist nochmal Deine allgemeine Python-Frage?

Verfasst: Dienstag 26. August 2008, 21:54
von goldfisch
blackjack hat schon recht, mir fehlen ein paar wissensgrundlagen zum betriebssystem. und ich habe nicht unbedingt ein python-problem sondern ein problem mit python und blender. die sollten zusammen arbeiten.

kaschu kann mir vielleicht helfen?
mein problem ist, dass ich nicht weiss, wo ich z.b. dateien oder scripts ablegen muss, damit blender sie finden kann. wenn ich in blender import os print os.getcwd() eingebe, gibt er den pfad / aus - und ich weiss nicht wo das ist.... ich dachte mit / sei derselbe ordner gemeint, in dem die blender-datei liegt aus der ich die abfrage starte.

wenn ich in blender
import csv
reader = csv.reader(open("test.csv", "rb"))
for row in reader:
for item in row:
print item

eingebe, dann findet er die datei test.csv nicht, obwohl diese datei im selben ordner liegt wie die blender und die python datei.
wo muss ich sie also hinlegen?

Verfasst: Dienstag 26. August 2008, 22:21
von kaschu
Wenn Du im Finder mit der rechten Maustaste die Datei "test.csv" anklickst, und Du den Menüpunkt "Informationen" anklickst, was wird Dir dann in der Zeile "Ort" angezeigt?

Wenn dort soetwas wie: "/Users/goldfisch/Documents" steht, versuche im Python Code dieses hier:

Code: Alles auswählen

import csv 
reader = csv.reader(open("/Users/goldfisch/Documents/test.csv", "rb")) 
for row in reader: 
    for item in row: 
        print item 

Verfasst: Donnerstag 28. August 2008, 00:04
von goldfisch
hey danke - jetzt findet er wohl die datei - dafür hat er jetzt schon wieder ein neues problem. folgende fehlermeldung erscheint:

Traceback (most recent call last):
File "csv.py", line 4, in ?
_csv.Error: newline inside string

hat das was mit den einrückungen zu tun? oder hat das was mit der csv-datei zu tun?
ursprünglich war das eine excel-datei, die ich als csv-datei exportiert habe.

Verfasst: Donnerstag 28. August 2008, 06:24
von BlackJack
Wie sieht die Datei bzw. die betreffende Zeile denn aus?

Verfasst: Donnerstag 28. August 2008, 06:32
von kaschu
goldfisch hat geschrieben:
Traceback (most recent call last):
File "csv.py", line 4, in ?
_csv.Error: newline inside string
Das wird entweder an der csv-Datei liegen, oder in der falschen Anwendung des csv-Readers (falscher Dialekt oder falsches Quoting).

Hast Du die Doku zum csv-Modul gelesen? Insbesondere: http://docs.python.org/lib/csv-fmt-params.html?

Verfasst: Donnerstag 28. August 2008, 22:10
von goldfisch
keine ahnung, was mit zeile 4 sein soll. für mich sieht die aus wie alle anderen auch.

danke für den link auf die csv-fmt-params - gibts so was auch in deutsch. das fachenglisch finde ich ziemlich schwierig... :oops:

Verfasst: Freitag 29. August 2008, 05:52
von BlackJack
Bist Du sicher das es Zeile 4 ist? Die 4 im Traceback bezieht sich auf den Quelltext und nicht auf die CSV-Datei!

Verfasst: Freitag 29. August 2008, 05:57
von kaschu
Jeden Tag eine gute Tat :wink: :

http://www.galileocomputing.de/openbook ... 19_005.htm

Jetzt aber... :idea: !

Verfasst: Freitag 29. August 2008, 14:19
von goldfisch
auf zeile vier steht im script
for row in reader:
danke für die gute tat (für den link)! :D werde versuchen es zu verstehen...

die csv-datei sollte mit kommas getrennt sein - oder? wenn ich sie in textwrangler anschaue, dann sind dort ; gesetzt. macht das was aus? und wenn ja, wie kann ich das ändern? habe schon alle varianten von excel durchprobiert. es macht immer ; anstatt ,

Verfasst: Freitag 29. August 2008, 14:37
von Rebecca

Code: Alles auswählen

reader = csv.reader(open(...), delimiter=";")

Verfasst: Freitag 29. August 2008, 15:42
von goldfisch
das habe ich soeben rausgefunden. eigentlich funktionierts
reader = csv.reader(open("versuch.csv","rb"), delimiter=";")
>>>
dann gebe ich ein
for row in reader:
print row
sollte er dann nicht den inhalt der datei ausgeben? - bei mir passiert gar nichts...

Verfasst: Freitag 29. August 2008, 15:53
von goldfisch
vorher habe ich es in idle (ohne blender) versucht. dann wird python 2.5 benutzt. es passiert zwar nichts aber es gibt auch keine fehlermeldung.

wenn ich dasselbe script in blender mit python 2.3 ausführen lasse, gibt er mir folgende fehlermeldung:
File "csvreader.py", line 3
for row in reader:
^
SyntaxError: invalid syntax
auf linie drei steht: for row in reader
also liegts schon auch mal an den versionen. wie lautet der befehl in python 2.3 für for row in reader?
das python openbook ist blöderweise für python 2.5 und nicht für 2.3

wo kann ich rausfinden, wie es in 2.3 geschrieben werden muss?

Verfasst: Freitag 29. August 2008, 19:46
von kaschu
Zeig bitte mal Deine ganze "csvreader.py" Datei. So wie sie bei Dir gespeichert ist. Also mit allen Einrückungen. Anhand der mageren Informationen von Dir ist es schwierig bis unmöglich eine Ursache für die Fehlermeldung zu benennen. :roll:

Verfasst: Samstag 30. August 2008, 13:00
von goldfisch
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?

Verfasst: Samstag 30. August 2008, 16:20
von kaschu
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.

Verfasst: Samstag 30. August 2008, 16:39
von Mephisto
Das sieht nicht gut aus - das `for` darf nicht eingerückt sein, d.H. auf der selben "Ebene" wie reader = ...

lg mephisto

Verfasst: Samstag 30. August 2008, 19:31
von kaschu
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!

Verfasst: Sonntag 31. August 2008, 15:41
von goldfisch
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?