TypeError-ratkaisu: NoneType-objekti ei ole iteroitavissa, kun iteroidaan rastereiden läpi arcpy.ListRasters (): n laatimassa luettelossa? [suljettu]

Suljettu . Tämä kysymys tarvitsee yksityiskohtia tai selkeyttä . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Sinulla on * tif: n jälkeen, poista se.
  • Varmista, että työtila (F: \ raster_test) on todella olemassa. Jos suoritat tämän koodin hakemistossa, jota ' ei ole, ' ll saa NoneType-virheen.
  • muokkaa kysymystäsi sisällyttääksesi koodinpätkän ja virheilmoitukset tekstinä eikä kuvina. Tämä tekee koodistasi ja virheistäsi haettavissa ja helpottaa myös mahdollisten vastaajien kopiointia / liittämistä koodiin omaa testausta varten.
  • @Hornbydd Uskon, että ylimääräinen * sallii .TIFF -tiedostot sekä .TIF
  • @Hornbydd Ylimääräisen * didn ' t poistaminen tee mitään eroa.

Vastaa

arcpy.env.workspace -polkusi – F:\raster_test – luultavasti ei ole olemassa tai arcpy: llä ei ole pääsyä siihen. arcpy.ListRasters() palauttaa tyhjän luettelon [] jos rastereita ei löydy, mutta palauttaa None, jos polkua ei löydy:

Polku on olemassa:

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

Tulostaa:

[] 

Polku ei ei ole olemassa:

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

Tulostaa:

None 

vastaus

… myös varmuuskopiointi lähemmäs koodin alkua kohti on tämä viallinen rivi (\ r on pakosarja Pythonissa):

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

Jos F: \ rasteri_testi on kelvollinen polku (ja sisältää rastereita), tämän pitäisi toimia hyvin:

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

Katso Python doc -osio merkkijonon literaaleista .

Kommentit

  • +1 @Sujai Tämä on klassinen python gotcha (ainakin Windowsissa). " \ r " on kuljetuspalautuksen pakosarja. Ajantasaisempi (vaikka varsinainen pakosarja ' t muuttui) on docs.python.org/2/reference/ lexical_analysis.html # merkkijonot
  • Sinä ' olet oikeassa, Luke …. -linkki päivitettiin uudempaan linkkiin. Paljon muuta hyvää tällä sivulla.

Vastaa

En ole varma, mikä aiheuttaa NoneType -virhe, arcpy.ListRasters() palauttaisi tyhjän luettelon eikä koskaan NoneType jos rastereita ei olisi löytyi. Anna tämä laukaus:

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") 

Vastaa

Uskon, että eri List -funktiot (ListTables, ListFeatureclasses jne.) palauttavat aina None jos annetussa työtilassa ei ole vastaavia tyyppejä. Suorita if -looginen testi luettelomuuttujalle.

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *