Walk (arcpy.da)

Краткая информация

Создает имена данных в дереве Каталога, проходя дерево сверху вниз или снизу вверх. Каждая директория/рабочая область в дереве выдает кортеж из трех элементов: dirpath, dirnames и filenames.

Обсуждение

ПримечаниеПримечание:

Функция Проход (Walk) стала доступной в пакете обновлений ArcGIS 10.1 Service Pack 1.

Модуль os в Python включает функцию 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.

Эта функция может быть использована для отчета об ошибке и продолжения прохода или остановки процесса при получении исключения.

ПримечаниеПримечание:

Имя файла доступно, как атрибут filename объекта исключения exception.

(Значение по умолчанию — None)

Function
followlinks

По умолчанию Walk() не проходит файлы подключения. Установите followlinks на значение Истина (True), чтобы проходить файлы подключения.

(Значение по умолчанию — False)

Boolean
datatype

Тип данных для ограничения возвращаемых результатов. Допустимыми типами данных являются следующие:

  • ЛюбойВозвращаются все типы данных. Эквивалентно использованию None или пропуску аргумента.
  • CadDrawing
  • CadastralFabric
  • Container
  • FeatureClass
  • FeatureDataset
  • Geo
  • GeometricNetwork
  • LasDataset
  • Layer
  • Locator
  • Map
  • MosaicDataset
  • 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

Типы растровых данных и типы данных объектов могут быть далее ограничены типом.

  • всеВозвращаются все типы. Эквивалентно использованию None или пропуску аргумента.
  • ЛюбойВозвращаются все типы. Эквивалентно использованию None или пропуску аргумента.

Доступные типы объектов:

  • Мультипатч Возвращаются только классы объектов мультипатч.
  • МультиточкаВозвращаются только классы мультиточечных объектов.
  • ТочкиВозвращаются только классы точечных объектов.
  • ПолигоныВозвращаются только классы полигональных объектов.
  • ПолилинияВозвращаются только классы полилинейных объектов.

Следующие типы растров являются корректными:

  • BIL Файл Esri Band Interleaved by Line
  • BIP Файл Esri Band Interleaved by Pixel
  • bmp Формат битовой графики для наборов растровых данных
  • BSQ Файл Esri Band Sequential
  • DAT Файл ENVI DAT
  • GIF Графический обменный формат (Graphic Interchange Format) для наборов растровых данных
  • GRID Формат наборов растровых данных Esri Grid
  • IMG Формат растровых данных ERDAS IMAGINE
  • JP2 Формат наборов растровых данных JPEG 2000
  • JPG Формат наборов растровых данных Joint Photographic Experts Group
  • PNG Формат наборов растровых данных Portable Network Graphic
  • TIF Теговый формат файла изображения для набора растровых данных (Tag Image File Format)

Поддерживается множество типов данных, если они вводятся списком или кортежем.

for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,
    datatype='FeatureClass', type=['Polygon', 'Polyline']):

(Значение по умолчанию — None)

String
Возвращено значение
Тип данныхОбъяснение
Generator

Выдает кортеж из трех элементов, который включает рабочую область, имена директорий и имена файлов (dirpath, dirnames и filenames).

  • dirpath – это путь к рабочей области в виде текстовой строки.
  • dirnames – это список имен поддиректорий и других рабочих областей в dirpath.
  • filenames – это список имен ресурсов, не являющихся рабочими областями, в dirpath.
ПримечаниеПримечание:

Имена в этих списках включают только базовое имя; никакие компоненты пути не включаются. Чтобы получить полный путь (начинающийся с вершины) для файла или директории в 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))

Связанные темы

5/10/2014