摘要
通过从上至下或从下至上遍历树,在目录/数据库结构中生成数据名称。每个目录/工作空间将生成一个三元组:目录路径、目录名称和文件名称。
讨论
Python os 模块包括 os.walk 函数,可用于遍历目录树并查找数据。os.walk 基于文件,不识别地理数据要素类、表或栅格等数据库内容。arcpy.da.Walk 可用于为数据创建目录。
语法
Walk (top, {topdown}, {onerror}, {followlinks}, {datatype}, {type})
参数 | 说明 | 数据类型 |
top | 将使用的顶级工作空间。 | String |
topdown | 如果 topdown 是 True 或者未指定,则目录组会在其任意工作组之前生成(从上至下生成工作空间)。如果 topdown 是 False,则此工作空间组将在所有子工作空间组之后生成(从下至上生成工作空间)。 如果 topdown 是 True,则可以在原位修改 dirnames 列表,Walk() 将仅递归进入到名称仍然保留在 dirnames 中的子工作空间中。这可用于限制搜索、实施特定访问顺序,甚至在 Walk() 再次恢复 Walk() 之前向其通知调用程序创建或重命名的目录。在 topdown 是 False 时 修改 dirnames 是无效的,因为在从下至上模式中, dirnames 中的工作空间是在生成 dirpath 本身之前生成的。 (默认值为 True) | Boolean |
onerror | 默认情况下,忽略错误。将使用 OSError 实例调用 onerror 函数。 此函数可以用于报告错误并继续使用 walk 或引发异常而导致中止。 (默认值为 None) | Function |
followlinks | 默认情况下,Walk() 不会进入连接文件中。将 followlinks 设置为 True 以访问连接文件。 (默认值为 False) | Boolean |
datatype | 限制返回的结果的数据类型。有效数据类型如下:
如果作为列表或组进行输入,则支持多个数据类型。
(默认值为 None) | String |
type | 可按类型进一步限制要素和栅格数据类型。
有效要素类型如下:
有效栅格类型为:
如果作为列表或组进行输入,则支持多个数据类型。
(默认值为 None) | String |
返回值
数据类型 | 说明 |
Generator | 提供的三元组包括:工作空间、目录名称和文件名称。
|
代码示例
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))