Skip to main content

Walk

汇总

通过从上至下或从下至上遍历树, Walk 函数可返回目录和数据库结构中的数据名。 每个目录或工作空间将生成一个三元组:目录路径、目录名称和文件名称。

讨论

os 模块包括 os.walk 函数,可用于遍历目录树并查找数据。 os.walk 函数基于文件,不识别地理数据要素类、表或栅格等数据库内容。 为了获得更好的性能,建议您将 os.walk 用于基于文件的格式。 arcpy.da.Walk 函数可用于为数据创建目录。

语法

Walk(workspace, {topdown}, {onerror}, {followlinks}, {datatype}, {type})

参数 说明 数据类型

workspace

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 trom the top down). If topdown is False, the tuple for a workspace is generated after the tuple for all of its subworkspaces (workspaces are generated from the 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 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 is generated.

(默认值为 True)

Boolean

onerror

Errors are ignored by default. The onerror function will be called with an OSError instance.

This function can be used to report the error and continue with Walk or raise an exception to cancel.

注:

The file name is available as the filename attribute of the exception object.

(默认值为 None)

Function

followlinks

By default, Walk does not visit connection files. Set followlinks to True to visit connection files.

(默认值为 False)

Boolean

datatype

Specifies the data type that will be used to limit the results.

  • Any—All data types are returned. This is equivalent to using None or skipping the argument.

  • CadDrawing—CAD files (.dwg, .dxf, and .dgn) are returned.

  • FeatureClass—Feature classes in a geodatabase and shapefiles (.shp) are returned.

  • FeatureDataset—Feature datasets in a geodatabase are returned.

  • GeometricNetwork—Geometric networks in a geodatabase are returned.

  • LasDataset—LAS dataset files (.las and .lasd) are returned.

  • Layer—Layer files (.lyrx) are returned.

  • Locator—Locator files (.loc) are returned.

  • Map— ArcGIS Pro projects (.aprx files), ArcGIS Pro map documents (.mapx files), and ArcMap documents (.mxd files) are returned.

  • MosaicDataset—Mosaic datasets in a geodatabase are returned.

  • NetworkDataset—Network datasets in a geodatabase are returned.

  • ParcelDataset—Parcel fabric datasets are returned.

  • RasterCatalog—Raster catalogs in a geodatabase are returned.

  • RasterDataset—Raster datasets in a geodatabase or in a folder are returned.

  • RelationshipClass—Relationship classes in a geodatabase are returned.

  • RepresentationClass—Representation classes in a geodatabase are returned.

  • Table—Tables in a geodatabase or folder and sheets in Excel workbooks are returned.

  • Terrain—Terrain datasets are returned.

  • Tin—TIN surfaces in a geodatabase are returned.

  • Tool—Tools in a toolbox are returned.

  • Topology—Topologies in a geodatabase are returned.

  • UtilityNetwork—Utility networks in a geodatabase are returned.

Multiple data types are supported if they're entered as a list or tuple.

for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,
    datatype=['MosaicDataset', 'RasterDataset']):

(默认值为 None)

String

type

Specifies whether feature and raster data types will be further limited by type.

  • All—All types are returned. This is equivalent to using None or skipping the argument.

  • Any—All types are returned. This is equivalent to using None or skipping the argument.

Valid feature types are the following:

  • Multipatch—Multipatch feature classes are returned.

  • Multipoint—Multipoint feature classes are returned.

  • Point—Point feature classes are returned.

  • Polygon—Polygon feature classes are returned.

  • Polyline—Polyline feature classes are returned.

Valid raster types are the following:

  • BIL— Esri Band Interleaved by Line file

  • BIP— Esri Band Interleaved by Pixel file

  • BMP— Bitmap graphic raster dataset format

  • BSQ— Esri Band Sequential file

  • DAT— ENVI DAT file

  • GIF— Graphic Interchange Format for raster datasets

  • GRID— Esri Grid raster dataset format

  • IMG— ERDAS IMAGINE raster data format

  • JP2— JPEG 2000 raster dataset format

  • JPG— Joint Photographic Experts Group raster dataset format

  • PNG— Portable Network Graphic raster dataset format

  • TIF— Tag Image File Format for raster datasets

Multiple data types are supported if they're entered as a list or tuple.

for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,
    datatype='FeatureClass', type=['Polygon', 'Polyline']):

(默认值为 None)

String

返回值

数据类型 说明

Generator

提供的三元组包括:工作空间、目录名称和文件名称。

  • dirpath 是字符串形式的工作空间路径。

  • dirnames 是子目录的名称列表和 dirpath 中的其他工作空间。

  • filenamesdirpath 中的非工作空间内容的名称列表。

注:

列表中的名称仅包括基本名称,不包括路径组件。 要获得 dirpath 中的文件或目录的完整路径(从顶部开始),请使用 os.path.join(dirpath, name)

代码示例

Walk 示例 1

使用 Walk 函数为面要素类在工作空间中创建目录。

代码将包含文件地理数据库中任何要素数据集中的面要素类。

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))
Walk 示例 2

使用 Walk 函数为栅格数据创建目录。 将忽略名为 back_up 的文件夹中的所有栅格。

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