首页 > 解决方案 > 应用在父文件夹中的文件夹上运行的脚本

问题描述

我有一个在文件夹上运行以创建轮廓线的脚本。由于我大约有 2700 个 DEM 需要处理,因此我需要一种使用脚本在父文件夹中的所有文件夹上运行的方法,并将它们保存到输出文件夹中。我不确定如何编写脚本,但如果我能得到一些指导,将不胜感激。

以下是我目前拥有的适用于单个文件夹的脚本。

import arcpy
from arcpy import env
from arcpy.sa import *

env.workspace = "C:/DATA/ScriptTesting/test"

inRaster = "1km17670"
contourInterval = 5
baseContour = 0
outContours = "C:/DATA/ScriptTesting/test/output/contours5.shp"

arcpy.CheckOutExtension("Spatial")

Contour(inRaster,outContours, contourInterval, baseContour)

标签: python

解决方案


您可以获得所有目录的列表,如下所示:

import arcpy
from arcpy import env
from arcpy.sa import *

import os

# pass in your root directory here
directories = os.listdir(root_dir)

然后你可以遍历这个目录:

for directory in directories:
    # I assume you want the workspace attribute set to the subfolders
    env.workspace = os.path.realpath(directory)

    inRaster = "1km17670"
    contourInterval = 5
    baseContour = 0

    # here you need to adjust the outputfile name if there is a file for every subdir
    outContours = "C:/DATA/ScriptTesting/test/output/contours5.shp"

    arcpy.CheckOutExtension("Spatial")

    Contour(inRaster,outContours, contourInterval, baseContour)

正如@a625993 提到的,os.walk如果您有递归嵌套的目录,也可能很有用。但正如我从您的问题中了解到的那样,您只有一个直接包含文件的子目录,而没有其他目录。这就是为什么只列出根目录下的目录就足够了。


推荐阅读