PyCharm führt Code nicht aus

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
nats
User
Beiträge: 4
Registriert: Dienstag 15. Oktober 2013, 14:17

Hallo,

wie der Titel schon sagt hab ich ein Problem mit PyCharm.
Genauer gesagt arbeite ich mit der Bibliothek arcpy und einer Shapefile-Datei, in der Gewässer sind.

Ich kann leider nicht verstehen warum der das Update nicht ausgeführt wird. Kann sich das jemand bitte ansehen?!

Code: Alles auswählen


### IMPPORTS ###
import arcpy 

### VARIBALEN ###

fc = r"C:\Users\natal\OneDrive\Dokumente\ArcGIS\Projects\Programmieren_Cursor\Programmieren_Cursor.gdb\stehende_Gewaesser"
gw_lry = "gewaesser"
where_clause = """ ANSPR_BL = 'Burgenland' """
gw_flds = ["NAME", "FLAECHEKM2", "KUENSTLICH"]
where_clause_update = """ NAME = 'k.A.' """

### MAIN ###

# Layer erzeugen
arcpy.MakeFeatureLayer_management(fc, gw_lry, where_clause)
print("Ausgewählte Gewässer im Burgenland: ", arcpy.GetCount_management(gw_lry))

# Beispiel Update Cursor
with arcpy.da.UpdateCursor(gw_lry, gw_flds, where_clause_update) as cursor:
    for urow in cursor:
        urow[0] == "ohne Angabe"
        cursor.updateRow(urow)                #  Diese Zeile wird nicht ausgeführt?!
     

# Prüfen ob die Änderung durchgeführt wurden
with arcpy.da.UpdateCursor(gw_lry, gw_flds) as ucur:
    for urow in ucur:
        print("Überprüfung: ", urow[0])
Bei der Ausgabe haben noch immer Zeilen im Namen "k.A." stehen, das Update wird also nicht ausgeführt.
Hab schon in den vorhandenen Codebeispielen nachgesehen, konnte aber keinen Fehler finden..
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Gewöhn dir bitte gleich an, vernünftige Namen zu vergeben. Ich weiß, dass 'gw_lry' für 'großgewachsener larry' steht und 'gw_flds' für 'great work folders'. Aber das Wissen kannst du nicht bei jedem voraussetzen. Und 'jeder' bist auch du, wenn du dir nach einiger Zeit Code erneut anschaust.

Ob Code ausgeführt wird kannst du sehr einfach prüfen, indem du print-Ausgaben im Code platziert und so schaust ob die Stelle erreicht wird.
Du lässt ganz am Ende etwas ausgeben. Du weißt also, dass der Code ausgefügrt wird. Deine Frage ist dann auch eine ganz andere: Ein Wert wird nicht gesetzt.

Zu deinem Problem. Was ist der Unterschied zwischen den beiden Zeilen?:

Code: Alles auswählen

a = 1
a == 1
nats
User
Beiträge: 4
Registriert: Dienstag 15. Oktober 2013, 14:17

danke für den guten Hinweis.
hab ich leider total übersehen, dass ich einen Vergleichsoperator statt einer Zuweisung verwendet hab.. :oops:
Antworten