Convalida dei file utilizzando ArcPy?


13

Ho uno script che esegue la scansione di una directory e genera informazioni di base sui dati raster come il nome del file, il formato, il numero di bande, ecc. Ho bisogno di un modo per farlo in modo che se la directory non contiene dati raster (cioè qualsiasi altra cosa rispetto ai dati raster), viene visualizzato un messaggio che indica che la directory non ha il tipo di dati corretto.

So che ArcPy ha una Describe()funzione che potrei usare per determinare il tipo di dati in una cartella, ma non sono sicuro di come implementarlo. Questo è quello che ho finora:

rasterList = arcpy.ListRasters("*", "ALL")
filesType = arcpy.DataType('RasterDataset') # Can use `DatasetType` as well. 
                                            # I've tested this function to describe
                                            # raster data and ArcPy prints out
                                            # 'RasterDataset', that is why I have it 
                                            # there in the brackets.
for name in rasterList:
    if rasterList == filesType:
        print ("\nFilename:"), name
    else:
        print ("This directory does not contain any raster data.")

Eventuali suggerimenti?

Risposte:


16

Che ne dici di qualcosa di semplice come:

if len(rasterList) == 0:
    print ("This directory does not contain any raster data.")
else:
    # Your raster processing code

La len()funzione calcola la lunghezza della stringa / lista restituita, quindi se ritorna 0allora non sai nulla nella cartella corrispondente al criterio (in questo caso, essendo un raster). In questo modo, se la cartella contiene raster (anche se non tutti i file sono raster) verranno elaborati.


Grazie nmpeterson! Questo è stato. Sapevo che mi mancava qualcosa di semplice. Non riesco a credere che non ho pensato alla len()funzione.
Kaoscify,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.