Mehr

Str- und list-Objekte können nicht verkettet werden

Str- und list-Objekte können nicht verkettet werden


Ich versuche, eine Gruppe von Rastern in "I1986_" + [Die ersten 3 Buchstaben des Rasters] umzubenennen. Wenn ein Raster beispielsweise "Raster1" heißt, wäre die Ausgabe "I1986_Ras".

Ich habe versucht, str()-Funktionen an einigen Stellen sowie .join in den out-Datenparameter des Tools einzubinden, aber am Ende andere Fehler generiert. Wenn ich die rList-Variable in der Umbenennungsfunktion nicht verwende und stattdessen die Rastervariable verwende, benennt das Skript die erste Datei im Verzeichnis um, sagt dann aber, dass i1986_xxx bereits vorhanden ist. Irgendwelche Ideen?

arcpy.env.workspace = DIRECTORY rList = arcpy.ListRasters() für Raster in rList: arcpy.Rename_management(rList, "I1986_" + rList[0:3])

Ich glaube, Sie wollen so etwas wie unten. rListe ist eine Liste. Es wird mit einer Zeichenfolge verkettet, aber wahrscheinlich nicht so, wie Sie es erwarten.

>>> l1 = ['Katze','Hund','Maus','Affe','Elefant'] >>>'I1986_' + str(l1[0:3]) "I1986_['Katze', ' Hund', 'Maus']"

Python erstellt eine Zeichenfolgendarstellung der ersten 3 Elemente in der Liste. Deshalb ist die 1. Iteration erfolgreich, aber dann schlägt die nächste fehl und meldet, dass das Objekt bereits existiert. Dies würde alle Ihre Objekte in denselben Namen umbenennen.

Sie durchlaufen bereits die Liste, verwenden Sie also Ihre Schleifenvariable, um mit den Elementen der Liste zu verketten.

für Raster in rList: newName = 'I1986_{}'.format(raster[0:3]) arcpy.Rename_management(raster, newName)