Dateiüberprüfung mit ArcPy?


13

Ich habe ein Skript, das ein Verzeichnis durchsucht und grundlegende Rasterdateninformationen wie den Dateinamen, das Format, die Anzahl der Bänder usw. ausgibt. Wenn das Verzeichnis keine Rasterdaten enthält (dh nichts anderes), muss dies so erfolgen als Rasterdaten) wird eine Meldung angezeigt, die besagt, dass das Verzeichnis nicht den richtigen Datentyp hat.

Ich weiß, dass ArcPy eine Describe()Funktion hat, mit der ich den Datentyp in einem Ordner bestimmen kann, bin mir jedoch nicht sicher, wie ich ihn implementieren soll. Das habe ich bisher:

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

Irgendwelche Vorschläge?

Antworten:


16

Wie wäre es mit etwas Einfachem wie:

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

Die len()Funktion berechnet die Länge der zurückgegebenen Zeichenfolge / Liste. Wenn sie zurückgegeben 0wird, wissen Sie, dass nichts im Ordner dem Kriterium entspricht (in diesem Fall handelt es sich um ein Raster). Wenn der Ordner Raster enthält (auch wenn nicht jede Datei ein Raster ist), werden diese auf diese Weise verarbeitet.


Danke nmpeterson! Das war's. Ich wusste, dass mir etwas Einfaches fehlte. Kann nicht glauben, dass ich nicht an die len()Funktion gedacht habe .
Kaoscify
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.