Encoding?

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.
Antworten
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Da mein Programm sehr groß wurde und sehr große Datenmengen bearbeitet und daher nach 2 Schleifendurchläufen oft abstürzte, habe ich die entsprechende Funktionen, die praktischen die "Hauptschuld" daran trägt einfach ausgelagert und rufe sie so auf:

PythonPath = "C:/python24/python.exe"
P_List = ["python.exe", "BE.py", fc, outTemp, BL_Curr]
os.spawnv(os.P_WAIT, PythonPath, P_List)

wobei fc, outTemp und BL_Curr, die Argumente sind, die ich an meine Funktion übergeben will.

BE.py sieht wie folgt aus:

Code: Alles auswählen

import arcgisscripting, sys, os, os.path, helper
gp = arcgisscripting.create()
gp.overwriteoutput = 1

FeatureClass = sys.argv[1]
out_Temp = sys.argv[2]
BL_Curr = sys.argv[3]

TempBL = outTemp + "/" + BL_Curr

if os.path.exists(TempBL) == 0:
   os.mkdir(TempBL)
if gp.Describe(FeatureClass).ShapeType == "Polygon":
   FC_Line = gp.PolygonToLine_management(FeatureClass,TempBL + "/Line_" + FeatureClass)
   helper.PrintAddMessage("Erstellen des FeatureLayers für die Selection", 0)
else:
   FC_Line = BL_dir +"/" + BL_Curr + "/" + FeatureClass	
.....

Rest des Quelltextes, ist ja eigentlich uninteressant, da es ja funktionierte, als ich die Funktion noch nicht in ein extra Python-Script ausgelagert habe. Nun tritt folgende Fehlermeldung auf:

File "D:\XXXX\PY_Test\Blattschnittentfernung_4.py", line 34
import arcgisscripting, sys, os, os.path, helper, BE
DeprecationWarning: Non-ASCII character '\xe4' in file D:\XXXX\PY_Test\BE.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Woran liegt das und wie kann ich das Problem beheben? Was hat das mit dem Encoding auf sich? Die erste Zeile in meinem Code lautet ja schon
# coding=<utf-8>

EDIT: ach ja ganz vergessen zu schreiben: mein "Hauptscript" bricht nicht ab, die ausgelagerte Funktion wird nur nicht ausgeführt und springt einfach wieder zurück in das Main-Programm und macht dort weiter.
BlackJack

Auch der Quelltext den Du zeigst ist uninteressant, da er weder die Kommentarzeile mit der Kodierungsangabe, noch eine Zeile die "angemeckert" wird, enthält.

Der Quelltext wird in Zukunft vom Compiler in Unicode umgewandelt. Damit das funktioniert, muss man ihm mitteilen in welcher Kodierung der Quelltext vorliegt, ansonsten wird im Moment ASCII angenommen und es gibt eine Warnung für Quelltexte die nicht in ASCII oder der angegebenen Kodierung vorliegen. Ist im Moment wie gesagt nur eine Warnung, und sollte das Programm nicht weiter stören, solange die falsch kodierten Zeichen nur in Kommentaren auftauchen.

Der Kodierungskommentar den Du angegeben hast ist falsch. Mindestens die '<' und '>' Zeichen gehören dort nicht hin. Üblicherweise sieht die Zeile so aus:

Code: Alles auswählen

# -*- coding: utf-8 -*-
Die Angabe muss natürlich mit der tatsächlichen Kodierung des Quelltextes übereinstimmen.
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Hab es gerade noch mal editiert gehabt meinen Post, da ich nun feststellte, dass es doch nicht nur Kommentare betrifft.

Wie bekomme ich den raus, welches Encoding mein Quelltext wirklich besitzt?

Und wie im Edit gesagt, das Programm wird nicht ausgeführt.

Code: Alles auswählen

helper.PrintAddMessage("Erstellen des FeatureLayers für die Selection", 0)
[code]

An dieser Zeile hat er sich z.B gestört, aber auch wenn ich sie auskommentiere.
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Okay, hab das Encoding jetzt geändert, jetzt kommt diese Fehlermeldung nicht mehr. Die BE.py wird trotzdem nicht ausgeführt, das macht mich gerade ziemlich ratlos.

(Gibt es irgend ein Trick, dasss sich das cmd-Fenster nicht immer schließt? Da erscheint noch eine weitere Fehlermeldung, die ich so schnell wie sie aufpopt und sich dann das Fenster wieder schließt gar nicht lesen kann, vermutlich liegt das Problem dann dort... )

:(
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

öffne ein eigenes cmd fenster "start->ausführen->"cmd" und starte dein skript in der DOS-box
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Danke für Eure schnellen Antworten.

@Zap: wäre eine Idee.... ;)
... hatte dann aber einfach ganz schnell Screenshots gemacht und konnte die Fehlermeldung dann auch lesen ..... :?


Habe inzwischen auch das Problem lösen können, wegen dem das Script nicht ausgeführt wurde und zählte eher unter die Rubrik: blond .... äh blind..., bzw. eine weitere Sache, an die ich nicht gedacht hatte, was die Geoprocessing Sachen betrifft...

Ich hoffe so was passiert mit etwas mehr Erfahrung irgendwann nicht mehr...
Antworten