Nun habe ich noch eine neuere Version gefunden. Beider Abarbeitung des Skripts erhalte ich jedoch folgende Fehlermeldung:
R:\Projekte\NEWAL-NET\Weberslinden 07_2006\Class-VP\CHROM\Python
processing file Output_CH4.txt
Traceback (most recent call last):
File "R:\Projekte\NEWAL-NET\Weberslinden 07_2006\Class-VP\CHROM\Python\gc_berechnung.py", line 220, in <module>
print date, 'CH4'
NameError: name 'date' is not defined
Hat einer von Euch eine Hilfe, warum der Name 'date' nicht definiert ist bzw. wie ich das mache?
Das dazugehörige Skript:
http://paste.pocoo.org/show/3194/
Edit (BlackJack): Code in Paste ausgelagert
IndexError: list index out of range
beim letzten Mal hat das einwandfrei funktioniert. Ich versuche es ein weiteres Mal. Oder habe ich den Begriff Codetags falsch vestanden?
Zuletzt geändert von DeBobbes am Donnerstag 30. August 2007, 17:55, insgesamt 1-mal geändert.
Ich habe den Quelltext mal wieder ins Paste ausgelagert. So lange Quelltexte sollten nicht ins Forum. Der Syntax-Highlighter hier hat leider eine Macke und das laden einer Seite wird um so langsamer je mehr Code im Thread gepostet wird. Bis irgendwann gar keiner mehr Antworten kann weil der Server mit einem Timeout abbricht.
Einen `NameError` bekommt man, wenn auf ein Name zugegriffen wird, den es nicht gibt. Um `date` mit ``print`` ausgeben zu können muss man irgendwann einmal gesagt haben, was `date` überhaupt ist.
Im Skript ist nur eine Zuweisung an `date` und zwar innerhalb der Schleife, die ab Zeile 104 beginnt. `date` wird aber nur etwas zugewiesen, wenn eine der Zeilen in der Datei, die dort verarbeitet wird, auch die Zeichenkette 'Acquisition Date' enthält. Wenn nicht, dann bleibt `date` undefiniert und führt zu der Ausnahme.
Wegen dem Paste-Service: Das mit dem Boardproblem bei Quelltexten kann man als Neumitglied im Board ja nicht wissen.
Code: Alles auswählen
In [52]: print date
---------------------------------------------------------------------------
<type 'exceptions.NameError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
<type 'exceptions.NameError'>: name 'date' is not defined
In [53]: date = 'heute'
In [54]: print date
heute
Wegen dem Paste-Service: Das mit dem Boardproblem bei Quelltexten kann man als Neumitglied im Board ja nicht wissen.
hier nun eine Beispieldatei, auf die während der Abarbeitung des Skripts in Bezug auf 'Acquisition Date' zugefriffen wird.
Dateiname 'WEBE001.txt'
[Header]
Data File Name R:\Projekte\NEWAL-NET\Weberslinden 07_2006\Class-VP\CHROM\WEBE_001.gcd
Output Date 30.08.2007
Output Time 18:12:48
[File Information]
Type Data File
Generated 12.02.2007 12:59:00
Generated by Admin
Modified 30.08.2007 18:12:48
Modified by Admin
[Sample Information]
Operator Name System
Acquisition Date 18.07.2006 19:10:03
Type Unknown
Level 1
Dateiname 'WEBE001.txt'
[Header]
Data File Name R:\Projekte\NEWAL-NET\Weberslinden 07_2006\Class-VP\CHROM\WEBE_001.gcd
Output Date 30.08.2007
Output Time 18:12:48
[File Information]
Type Data File
Generated 12.02.2007 12:59:00
Generated by Admin
Modified 30.08.2007 18:12:48
Modified by Admin
[Sample Information]
Operator Name System
Acquisition Date 18.07.2006 19:10:03
Type Unknown
Level 1
Ist das auch die erste Datei, die verarbeitet wird?
Da fällt auch gleich ein Problem mit dem Programm auf: Wenn `date` erst einmal gesetzt ist, fällt es nicht auf wenn eine der im folgenden verarbeiteten Dateien dieses Datum nicht mehr enthält. Es wird dann einfach das aus der letzten Datei genommen die ein solches Datum enthalten hat. Das Programm ist also nicht besonders robust und produziert dann unter Umständen falsche Daten ohne etwas zu "sagen".
Da fällt auch gleich ein Problem mit dem Programm auf: Wenn `date` erst einmal gesetzt ist, fällt es nicht auf wenn eine der im folgenden verarbeiteten Dateien dieses Datum nicht mehr enthält. Es wird dann einfach das aus der letzten Datei genommen die ein solches Datum enthalten hat. Das Programm ist also nicht besonders robust und produziert dann unter Umständen falsche Daten ohne etwas zu "sagen".
WEBE001.TXT ist die erste Datei in der Sequenz von Dateien, die verarbeitet werden sollen. Die Datei ist nicht vollständig sondern nur der Header der Datei dargestellt.
Aber warum kommt trotzdem die Fehlermeldung, dass 'date' nicht definiert sei???
Um die erhöhte Robustheit würde ich meich gerne erst später kümmern, wenn das erste Problem gelöst ist.
Aber warum kommt trotzdem die Fehlermeldung, dass 'date' nicht definiert sei???
Um die erhöhte Robustheit würde ich meich gerne erst später kümmern, wenn das erste Problem gelöst ist.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, und als Zeichen der Besserung kannst du jetzt schon anfangen deinen Threads _sinnvolle_ Titel zu geben. Zum Beispiel gleich diesem, indem du den ersten Post editierst.DeBobbes hat geschrieben:Sorry BlackJack, ich bin hoffnungsvoll, dass ich es eines Tages auch noch kapieren werde, dass du es bist, der den Quellcode ins Paste auslagert und dies nicht automatisch passiert.....
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Die Frage ist nicht ob 'WEBE001.TXT' die erste Datei ist, die verarbeitet werden *soll*, sondern ob sie es auch *ist*.
habe herausgefunden, dass noch andere Dateien im Verzeichnis gelistet waren, die nicht dem geforderten Format entsprachen. Nach deren Löschen erhalte ich nun die folgende Fehlermeldung:
H:\Python
processing file Webe003.txt
19.07.2006 01:10:04 CH4
19.07.2006 01:10:04 N2O
Traceback (most recent call last):
File "H:\Python\gc_berechnung.py", line 277, in <module>
eichgas = Ch2_EG[eichgasePos]
IndexError: list index out of range
Welcher Index (wo definiert??) ist da out of range???
Nachfolgend daher der Inhalt der TXT-Datei, die abgearbeitet werden soll:
http://paste.pocoo.org/show/3224/
H:\Python
processing file Webe003.txt
19.07.2006 01:10:04 CH4
19.07.2006 01:10:04 N2O
Traceback (most recent call last):
File "H:\Python\gc_berechnung.py", line 277, in <module>
eichgas = Ch2_EG[eichgasePos]
IndexError: list index out of range
Welcher Index (wo definiert??) ist da out of range???
Nachfolgend daher der Inhalt der TXT-Datei, die abgearbeitet werden soll:
http://paste.pocoo.org/show/3224/
eichgas = Ch2_EG[eichgasePos]
IndexError: list index out of range
Welcher Index (wo definiert??) ist da out of range???
"IndexError: list index out of range" kommt immer dann, wenn man versucht, auf einen Listenindex (eine Position in der Liste) zuzugreifen, der nicht existiert.
z.b:
Code: Alles auswählen
lst = ['all', 'hail', 'discordia']
lst[23]
In deiner Zeile sind zwei indexzugriffe. Ich schreibe die zeile mal anders auf:
Code: Alles auswählen
temp = eichgasePos[i]
eichgas = Ch2_EG[temp]
Ich würde dir raten, die Zeile aufzuspalten, und so zu gucken, in welchem Zugriff der Fehler auftaucht.
Den Datenfluss in so einem grossen, unstrukturierten Quelltext mit so vielen Variablen nachzuvollziehen ist nicht so schön.
Der Ursprung liegt in der Datendatei ab Zeile 147 wo in dem 'MK'-Block ein 'MK4A' zu fehlen scheint. Ob der Fehler nun in den Daten liegt, oder im Programm weil es mit dieser Unregelmässigkeit nicht umgehen kann, muss jemand beurteilen, der Ahnung von der Anwendungsdomäne hat.
Ich weiss dass es lästig sein kann ein ordentlich strukturiertes, dokumentiertes und robustes Programm zu schreiben, wenn man nur schnell ein paar Daten auswerten möchte, aber sowie man das Programm nicht guten Gewissens nach der Verwendung löschen würde, lohnt es sich sauber zu programmieren. Solche Programme "leben" meistens länger als man denkt und müssen irgendwann doch verändert werden, oder an Änderungen in den Daten angepasst werden. Und das am Ende vielleicht sogar, wie in diesem Fall, von jemand anderem als dem ursprünglichen Autor.
Der Ursprung liegt in der Datendatei ab Zeile 147 wo in dem 'MK'-Block ein 'MK4A' zu fehlen scheint. Ob der Fehler nun in den Daten liegt, oder im Programm weil es mit dieser Unregelmässigkeit nicht umgehen kann, muss jemand beurteilen, der Ahnung von der Anwendungsdomäne hat.
Ich weiss dass es lästig sein kann ein ordentlich strukturiertes, dokumentiertes und robustes Programm zu schreiben, wenn man nur schnell ein paar Daten auswerten möchte, aber sowie man das Programm nicht guten Gewissens nach der Verwendung löschen würde, lohnt es sich sauber zu programmieren. Solche Programme "leben" meistens länger als man denkt und müssen irgendwann doch verändert werden, oder an Änderungen in den Daten angepasst werden. Und das am Ende vielleicht sogar, wie in diesem Fall, von jemand anderem als dem ursprünglichen Autor.
Wunderbar!! Das Skript funktioniert. Werde die Tipps an den Entwickler weitergeben und eine robuste Version erstellen lassen.
Lag letztendlich doch an der Dateiausgabe des Datenerfassungsprogramms, in der ein Fehler steckte (1* MK4A fehlte inder Ausgabe).
Danke an alle, die zur Lösung meines Problems beigetragen haben. Ein fettes Lob an BlackJack!!!...der mich auf den richtigen Gedanken gebracht hat.
Lag letztendlich doch an der Dateiausgabe des Datenerfassungsprogramms, in der ein Fehler steckte (1* MK4A fehlte inder Ausgabe).
Danke an alle, die zur Lösung meines Problems beigetragen haben. Ein fettes Lob an BlackJack!!!...der mich auf den richtigen Gedanken gebracht hat.