Краткая информация
Создает имена данных в структуре каталог/база данных (directory/database) проходом по дереву сверху вниз или снизу вверх. Каждая (структура) каталог/рабочая область (directory/workspace) дает кортеж из трех составляющих: путь к каталогу, имена каталогов и имена файлов.
Обсуждение
Модуль 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(). Изменение dirnames в том случае, если topdown установлен как False неэффективно, поскольку, при режиме снизу вверх, рабочие области в dirnames создаются до того, как генерируется сам dirpath. (Значение по умолчанию — True) | Boolean |
onerror | По умолчанию, ошибки игнорируются. Функция onerror будет вызвана с экземпляром OSError. Эта функция может быть использована для отчета об ошибке и продолжения прохода или остановки процесса при получении исключения. (Значение по умолчанию — None) | Function |
followlinks | По умолчанию Walk() не проходит файлы подключения. Установите followlinks в значение True для прохода файлов подключения. (Значение по умолчанию — False) | Boolean |
datatype | Тип данных для ограничения возвращаемых результатов. Допустимыми типами данных являются следующие:
Поддерживается множество типов данных, если они вводятся списком или кортежем.
(Значение по умолчанию — None) | String |
type | Типы растровых данных и типы данных объектов могут быть далее ограничены типом.
Допустимыми типами объектов являются следующие:
Следующие типы растров являются корректными:
Поддерживается множество типов данных, если они вводятся списком или кортежем.
(Значение по умолчанию — 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))