摘要
通过从上至下或从下至上遍历树,在目录/数据库结构中生成数据名称。各目录/工作空间提供一个三元组:目录路径、目录名称和文件名称。
讨论
Python os 模块包含 os.walk 函数,可用于遍历目录树并查找数据。os.walk 基于文件,不识别地理数据要素类、表或栅格等数据库内容。arcpy.da.Walk 可用于为数据编目录。
语法
Walk (top, {topdown}, {onerror}, {followlinks}, {datatype}, {type})
参数 | 说明 | 数据类型 |
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 Falseis ineffective, because in bottom-up mode the workspaces in dirnames are generated before dirpath itself is generated. (默认值为 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. (默认值为 None) | Function |
followlinks | By default, Walk() does not walk into connection files. Set followlinks to True to visit connection files. (默认值为 False) | Boolean |
datatype | The data type to limit the results returned. Valid data types are the following:
Multiple data types are supported if entered as a list or tuple.
(默认值为 None) | String |
type | Feature and raster data types can be further limited by type.
Valid feature types are the following:
Valid raster types are:
Multiple data types are supported if entered as a list or tuple.
(默认值为 None) | String |
返回值
数据类型 | 说明 |
Generator | 提供的三元组包括:工作空间、目录名称和文件名称 (dirpath, dirnames, and filenames)。
|
代码实例
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))