Краткая информация
Создает имена данных в структуре каталог/база данных проходом по дереву сверху вниз или снизу вверх. Каждая каталог/рабочая область дает кортеж из трех составляющих: путь к каталогу, имена каталогов и имена файлов.
Описание
Модуль 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 | Выдает кортеж из трех элементов, который включает рабочую область, имена каталогов и имена файлов.
|
Пример кода
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))