python - 应用在父文件夹中的文件夹上运行的脚本
问题描述
我有一个在文件夹上运行以创建轮廓线的脚本。由于我大约有 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)
解决方案
您可以获得所有目录的列表,如下所示:
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
如果您有递归嵌套的目录,也可能很有用。但正如我从您的问题中了解到的那样,您只有一个直接包含文件的子目录,而没有其他目录。这就是为什么只列出根目录下的目录就足够了。
推荐阅读
- javascript - 在下拉菜单中停止页面滚动的最佳方法是什么
- python - 证书验证失败:证书已过期 (_ssl.c:1108)
- python - 如何运行位于 AWS EC2 服务器上的 python 脚本?
- c++ - 如何访问具有地图的二维矢量?
- node.js - 如何使用 mongoose 解决 mongodb 中的 MissingSchemaError
- android - Android Studio,如何查看“提示(快速文档)”?
- html - 如何将复选框变成按钮
- database - 如何在mongodb中存储人的队列?
- python - 使用 yolo4.cfg 训练 tensorflow 2.2 中的形状不匹配问题
- python - 更新问题 ORA-01036:非法变量名称/编号