Mehr

Parameter für Skripttool gibt ungültigen Ausdruck ERROR 000358?

Parameter für Skripttool gibt ungültigen Ausdruck ERROR 000358?


Ich habe das Python-Skript-Tool in arcgis 10.1 wie unten beschrieben erstellt. Ich versuche, Eingabeparameter zu nehmen und an die Select-Anweisung zu übergeben.

Es gibt einen Fehler, wenn ich dieses Tool ausführe.

import arcpy from arcpy import env env.workspace = "Datenbankverbindungensc_dev.sde" name = arcpy.GetParameterAsText(0) arcpy.SelectLayerByAttribute_management ("SC.STATES", "NEW_SELECTION", " "STATE_NAME" = name")

Der Fehler ist Fehler beim Ausführen… Ungültiger Ausdruck… ERROR 000358


Ich gehe davon aus, dass Name auf eine Zeichenfolge festgelegt ist und STATE_NAME ein Textfeld ist.

In diesem Fall denke ich, sollte das funktionieren.

Veränderung:

arcpy.SelectLayerByAttribute_management ("SC.STATES", "NEW_SELECTION", " "STATE_NAME" = Name")

zu:

arcpy.SelectLayerByAttribute_management ("SC.STATES", "NEW_SELECTION", '"STATE_NAME" = ' + "'" + name + "'")

Beachten Sie, wie ich:

  • umschließen"STATE_NAME" =in einfachen Anführungszeichen (da der Feldname durch doppelte Anführungszeichen begrenzt wird);
  • aktivieren Sie dieNameVariable, die ausgewertet werden soll, indem sie keine Anführungszeichen enthält
  • müssen einfache Anführungszeichen um die setzen Wert vonName, was ich tue, indem ich sie jeweils in doppelte Anführungszeichen einschließe.

Die folgende Syntax funktioniert auch und ist so, wie ich es heutzutage normalerweise tun würde:

arcpy.SelectLayerByAttribute_management ("SC.STATES", "NEW_SELECTION", "STATE_NAME = '{0}'".format(name))

Das Obige verwendet die Python-Formatierungssyntax, um die where_clause zu erstellen.