Na dann guck Dir doch bitte noch einmal *ganz genau* den Dateinamen an, der da in der Ausnahme steht! '\b' ist die Codesequenz für "backspace" und das ist ziemlich sicher nicht im Dateinamen enthalten.
Falls das bisher immer das Problem war, dann nimm das mal als Hinweis die exakten Daten und Tracebacks zu posten, und nicht irgendwelche gekürzten oder veränderten, bei denen gar keine Probleme auftreten würden. Dann müssen wir hier weniger raten.
XML File gezielte Daten auslesen
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hm ... das ist sehr seltsam!Daniela hat geschrieben:Also als ich die Datei in den gleichen Ordner kopiert hatte, hatte ich natürlich die Pfade auch geändert.
Bekommst Du denn auch die Ausgabe?Aber ich hab es grad nachgeholt und wenn ich es über die Konsole aufrufe, bekomme ich keine Fehlermeldung oder ähnliches.
Das ist doch schonmal was!
Der sollte ja ausgegeben werden ...Kann ich mir auch den Inhalt von result anschauen, um zu sehen, ob es der richtige ist?
Was bedeutet "hinter"? Wie rufst Du es denn sonst auf?Wenn ich hinter der Funktion "main()" aufrufe, werden mir (mal wieder) ein paar Fehler angezeigt.
Na die Meldung ist doch klar! Die Datei wird nicht gefunden - wie gehabtFehlermeldung:
Code: Alles auswählen
Traceback (most recent call last): File "C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\MeanderMovement.py", line 12, in <module> main() File "C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\MeanderMovement.py", line 4, in main doc = etree.parse('C:\Dokumente und Einstellungen\gast_82z\Desktop\Betoscan\betoscan\NeoPlatformControl\Platform\Roadmap\eigeneRM3.rm') File "C:\Python25\Lib\xml\etree\ElementTree.py", line 862, in parse tree.parse(source, parser) File "C:\Python25\Lib\xml\etree\ElementTree.py", line 579, in parse source = open(source, "rb") IOError: [Errno 2] No such file or directory: 'C:\\Dokumente und Einstellungen\\gast_82z\\Desktop\\Betoscan\x08etoscan\\NeoPlatformControl\\Platform\\Roadmap\\eigeneRM3.rm'
Ah ... jetzt kapiere ich: Ohne den Aufruf, wird die Funktion definiert, aber ja nie aufgerufen - so kann es zu keinem Fehler kommenOhne die Zeile 12 (dem main-aufruf) läuft es problemlos durch.
In dem Du endlich die Datei in das selbe Verzeichnis kopierst und die Dateiangabe entsprechend änderst! Danach befolgst Du meine oben genannten Vorschläge, um Dich an das eigentliche Verzeichnis heranzutasten.Nur wie bekomme ich dann wenigstens zur Kontrolle die ausgelesenen Werte angezeigt?
Äh ... was meinst Du da genau? Also Du müßtest einfach das "result" per return zurückliefern und voila hast Du die Werte. Ganz einfach eigentlich!Und wie kann ich später mit den Werten arbeiten.
Geduldig sind wir hier eigentlich alleVielen Dank schon mal für eure Hilfe und vor allem eurer Gedult.
Wird e aber nicht. Hänge ich hinter das _print result_ noch ein _return result_ ran, wird es ganz normal compiliert ohne Fehler.Hyperion hat geschrieben:Der sollte ja ausgegeben werden ...Kann ich mir auch den Inhalt von result anschauen, um zu sehen, ob es der richtige ist?
Die Datei ist im selben Ordner, sowie im der Dateipfad in der Datei ist auch entsprechend angepasst.In dem Du endlich die Datei in das selbe Verzeichnis kopierst und die Dateiangabe entsprechend änderst! Danach befolgst Du meine oben genannten Vorschläge, um Dich an das eigentliche Verzeichnis heranzutasten.Nur wie bekomme ich dann wenigstens zur Kontrolle die ausgelesenen Werte angezeigt?
So sieht der momentane Code aus: (es hat sich nicht wirklich viel verändet)Äh ... was meinst Du da genau? Also Du müßtest einfach das "result" per return zurückliefern und voila hast Du die Werte. Ganz einfach eigentlich!Und wie kann ich später mit den Werten arbeiten.
Code: Alles auswählen
from xml.etree import ElementTree as etree
def main():
doc = etree.parse('C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\eigeneRM3.rm')
result = list()
for station in doc.findall('stations/station'):
point = station.find('point')
result.append((station.get('id'),
(int(point.get('x')), int(point.get('y')))))
print result
return result
main() #Aufruf der Funktion
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\MeanderMovement.py", line 13, in <module>
main()
File "C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\MeanderMovement.py", line 4, in main
doc = etree.parse('C:\Dokumente und Einstellungen\gast_82z\workspace\betoscan\src\eigeneRM3.rm')
File "C:\Python25\Lib\xml\etree\ElementTree.py", line 862, in parse
tree.parse(source, parser)
File "C:\Python25\Lib\xml\etree\ElementTree.py", line 579, in parse
source = open(source, "rb")
IOError: [Errno 2] No such file or directory: 'C:\\Dokumente und Einstellungen\\gast_82z\\workspace\x08etoscan\\src\\eigeneRM3.rm'
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du hast das mit dem Kopieren und Anpassen nicht verstanden! Meine Motivation war, dass Du zum einen siehst, dass das Script so läuft und zum anderen dass Du siehst, dass das mit Deinem Pfad eben nicht stimmt! BlackJack hat Dir dazu ja auch schon was geschrieben!
Wieso hast Du nicht folgendes probiert?
Genau darauf wollte ich hinaus!
Denk noch mal über BalckJacks Einwürfe und das "\b" nach ... und die Lösung dafür habe ich Dir oben auch schon genannt.
Wieso hast Du nicht folgendes probiert?
Code: Alles auswählen
def main():
doc = etree.parse('eigeneRM3.rm')
...
Denk noch mal über BalckJacks Einwürfe und das "\b" nach ... und die Lösung dafür habe ich Dir oben auch schon genannt.
OK, ich hab meinen Fehler gefunden. Ich glaub ich hatte Tomaten auf den Augen. Der Fehler war wirklich im Dateipfad zu finden, wie BlackJack gesagt hatte. Dadurch das ein Ordner mit nem kleinen "b" angefangen hat, wurde das "\b" als Escape-Sequenz angesehen. Ist mir nur vorher nicht wirklich aufgefallen bzw. überlesen.Hyperion hat geschrieben:Du hast das mit dem Kopieren und Anpassen nicht verstanden! Meine Motivation war, dass Du zum einen siehst, dass das Script so läuft und zum anderen dass Du siehst, dass das mit Deinem Pfad eben nicht stimmt! BlackJack hat Dir dazu ja auch schon was geschrieben!
Wieso hast Du nicht folgendes probiert?Genau darauf wollte ich hinaus!Code: Alles auswählen
def main(): doc = etree.parse('eigeneRM3.rm') ...
Denk noch mal über BalckJacks Einwürfe und das "\b" nach ... und die Lösung dafür habe ich Dir oben auch schon genannt.
Naja jetzt funktioniert es ja wenigstens.
Nochmals vielen Dank an Hyperion und BlackJack, ihr habt mir wirklich sehr geholfen.