Walk (arcpy.da)
Récapitulatif
Generate data names in a Catalog tree by walking the tree top-down or bottom-up. Each directory/workspace in the tree yields a tuple of three: dirpath, dirnames, and filenames.
Discussion
The Walk function was made available at ArcGIS 10.1 Service Pack 1.
Python's os module includes an os.walk function that can be used to walk through a directory tree and find data. os.walk is file based and does not recognize database contents such as geodatabase feature classes, tables, or rasters. arcpy.da.Walk can be used to catalog data.
Syntaxe
Paramètre | Explication | Type de données |
top |
The top-level workspace that will be used. | String |
topdown | If topdown is True or not specified, the tuple for a directory is generated before the tuple for any of its workspaces (workspaces are generated top-down). If topdown is False, the tuple for a workspace is generated after the tuple for all of its subworkspaces (workspaces are generated bottom-up). When topdown is True, the dirnames list can be modified in-place, and Walk() will only recurse into the subworkspaces whose names remain in dirnames. This can be used to limit the search, impose a specific order of visiting, or even to inform Walk() about directories the caller creates or renames before it resumes Walk() again. Modifying dirnames when topdown is False is ineffective, because in bottom-up mode the workspaces in dirnames are generated before dirpath itself is generated. (La valeur par défaut est True) | Boolean |
onerror | Errors are ignored by default. The onerror function will be called with an OSError instance. The function can be used to report the error and continue with the walk or raise an exception to abort. Remarque : The file name is available as the filename attribute of the exception object. (La valeur par défaut est None) | Function |
followlinks | By default, Walk() does not walk into connection files. Set followlinks to True to visit connection files. (La valeur par défaut est False) | Boolean |
datatype | The datatype to limit the results returned. Valid datatypes are:
Multiple datatypes are supported if entered as a list or tuple.
(La valeur par défaut est None) | String |
type | Feature and raster data types can be further limited by type.
Valid feature types are:
Valid raster types are:
Multiple datatypes are supported if entered as a list or tuple.
(La valeur par défaut est None) | String |
Type de données | Explication |
Generator | Yields a tuple of three that includes the workspace, directory names, and file names (dirpath, dirnames, and filenames).
Remarque : Names in the lists include only the base name; no path components are included. To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath, name). |
Exemple de code
Use the Walk function to catalog polygon feature classes.
import arcpy
import os
workspace = "c:/data"
feature_classes = []
walk = arcpy.da.Walk(workspace, datatype="FeatureClass", type="Polygon")
for dirpath, dirnames, filenames in walk:
for filename in filenames:
feature_classes.append(os.path.join(dirpath, filename))
Use the Walk function to catalog raster data. Any rasters in a folder named back_up will be ignored.
import arcpy
import os
workspace = "c:/data"
rasters = []
walk = arcpy.da.Walk(workspace, topdown=True, datatype="RasterDataset")
for dirpath, dirnames, filenames in walk:
# Disregard any folder named 'back_up' in creating list of rasters
if "back_up" in dirnames:
dirnames.remove('back_up')
for filename in filenames:
rasters.append(os.path.join(dirpath, filename))