Walk

描述

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

讨论

Python os 模块包括 os.walk 函数,可用于遍历目录树并查找数据。os.walk 基于文件,不识别地理数据要素类、表或栅格等数据库内容。arcpy.da.Walk 可用于为数据创建目录。

语法

Walk (top, {topdown}, {onerror}, {followlinks}, {datatype}, {type})
参数说明数据类型
top

将使用的顶级工作空间。

String
topdown

如果 topdownTrue 或者未指定,则目录组会在其任意工作组之前生成(从上至下生成工作空间)。如果 topdownFalse,则此工作空间组将在所有子工作空间组之后生成(从下至上生成工作空间)。

如果 topdownTrue,则可以在原位修改 dirnames 列表,Walk 将仅递归进入到名称仍然保留在 dirnames 中的子工作空间中。这可用于限制搜索、实施特定访问顺序,甚至在 Walk 再次恢复 Walk 之前向其通知调用程序创建或重命名的目录。当 topdownFalse 时,修改 dirnames 是无效的,因为在从下至上模式中,dirnames 中的工作空间是在生成 dirpath 本身之前生成的。

(默认值为 True)

Boolean
onerror

默认情况下,忽略错误。将使用 OSError 实例调用 onerror 函数。

此函数可以用于报告错误并继续使用 walk 或引发异常而导致中止。

注:

文件名称可用作异常对象的 filename 属性。

(默认值为 None)

Function
followlinks

默认情况下,Walk 不会进入连接文件中。将 followlinks 设置为 True 以访问连接文件。

(默认值为 False)

Boolean
datatype

限制返回的结果的数据类型。有效数据类型如下:

  • Any返回所有数据类型。相当于使用 None 或跳过此参数。
  • CadDrawing
  • CadastralFabric
  • Container
  • FeatureClass
  • FeatureDataset
  • GeometricNetwork
  • LasDataset
  • Layer
  • Locator
  • Map
  • MosaicDataset
  • NetworkDataset
  • PlanarGraph
  • RasterCatalog
  • RasterDataset
  • RelationshipClass
  • RepresentationClass
  • Style
  • Table
  • Terrain
  • Text
  • Tin
  • Tool
  • Toolbox
  • Topology

如果作为列表或组进行输入,则支持多个数据类型。

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

(默认值为 None)

String
type

可按类型进一步限制要素和栅格数据类型。

  • All返回所有类型。相当于使用 None 或跳过此参数。
  • Any返回所有类型。相当于使用 None 或跳过此参数。

有效要素类型如下:

  • Multipatch 仅返回多面体要素类。
  • Multipoint仅返回多点要素类。
  • Point仅返回点要素类。
  • Polygon仅返回面要素类。
  • Polyline仅返回折线要素类。

有效栅格类型为:

  • BIL Esri 波段按行交叉格式文件
  • BIP Esri 波段按像元交叉格式文件
  • BMP 位图图形栅格数据集格式
  • BSQ Esri 波段顺序格式文件
  • DAT ENVI DAT 文件
  • GIF 栅格数据集的图形交换格式
  • GRID Esri Grid 栅格数据集格式
  • IMG ERDAS IMAGINE 栅格数据格式
  • JP2 JPEG 2000 栅格数据集格式
  • JPG 联合图像专家组栅格数据集格式
  • PNG 可移植网络图形栅格数据集格式
  • TIF 栅格数据集的标记图像文件格式

如果作为列表或组进行输入,则支持多个数据类型。

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

相关主题