Risoluzione di TypeError: Loggetto NoneType non è iterabile durante literazione dei raster nellelenco compilato da arcpy.ListRasters ()? [chiuso]

Chiuso . Questa domanda richiede dettagli o chiarezza . Attualmente non accetta risposte.

Commenti

  • Hai un * dopo tif, rimuovilo.
  • Assicurati che lo spazio di lavoro (F: \ raster_test) esista effettivamente. Se esegui questo codice su una directory che ' non esiste, ' riceverai lerrore NoneType.
  • modifica la tua domanda per includere lo snippet di codice e i messaggi di errore come testo non come immagini. Ciò rende il tuo codice e gli errori ricercabili e rende anche più facile per i potenziali rispondenti copiare / incollare il codice per i propri test
  • @Hornbydd Credo che lextra * consentirà .TIFF file da includere e .TIF
  • @Hornbydd La rimozione dellextra * non ha ' t fare qualsiasi differenza.

Risposta

Il tuo arcpy.env.workspace percorso – F:\raster_test – probabilmente “non esiste o arcpy non ha accesso ad esso. arcpy.ListRasters() restituirà un elenco vuoto [] se non vengono trovati raster, ma restituirà None se il percorso non è” t trovato:

Il percorso esiste:

arcpy.env.workspace = r"C:\Temp" # Does Exist rasters = arcpy.ListRasters("*.tif) print rasters 

Restituirà:

[] 

Il percorso non non esiste:

arcpy.env.workspace = r"C:\Temp2" # Does NOT Exist rasters = arcpy.ListRasters("*.tif) print rasters 

produrrà:

None 

Risposta

… inoltre, il backup più vicino allinizio del codice è questa riga difettosa (\ r è una sequenza di escape in Python):

arcpy.env.workspace = "F:\raster_test" # Does NOT Exist 

Se F: \ raster_test è un percorso valido (e contiene raster), dovrebbe funzionare bene:

arcpy.env.workspace = r"F:\raster_test" # Does Exist 

Vedi la sezione della documentazione di Python su stringhe letterali .

Commenti

  • +1 @Sujai Questo è un classico trucco in Python (almeno su Windows). " \ r " è la sequenza di escape per un ritorno a capo. Una versione più aggiornata (sebbene le effettive sequenze di fuga non siano ' t modificata) è docs.python.org/2/reference/ lexical_analysis.html # strings
  • Tu ' hai ragione, Luke …. link nella risposta aggiornato al link più recente. Molte altre cose interessanti in quella pagina.

Rispondi

Non sono sicuro di cosa stia causando il tuo NoneType errore, arcpy.ListRasters() restituirebbe un elenco vuoto e mai un NoneType se non cerano raster trovato. Prova:

import arcpy import os from arcpy.sa import ExtractByMask out_dir = r"F:\clipped_images" arcpy.env.workspace = r"F:\raster\test" arcpy.CheckOutExtension("Spatial") mask = r"F:\shapefile\Export_Output.shp" for raster in arcpy.ListRasters("*.tif"): output_raster = os.path.join(out_dir, os.path.splitext(raster)[0] + "_clip.tif") ExtractByMask(raster, mask, output_raster) arcpy.CheckInExtension("Spatial") 

Risposta

Credo che i vari Le List funzioni (ListTables, ListFeatureclasses e così via) restituiscono sempre None se non sono presenti tipi corrispondenti nello spazio di lavoro specificato. Esegui un rapido if test logico per la tua variabile di elenco.

rasters = arcpy.ListRasters ("*.TIF") if rasters: your code here 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *