我正在尝试导出我子目录中的所有地图。
我有要导出的代码,但我无法弄清楚在哪里添加循环,这将使它为所有子目录执行此操作。目前,它正在导出目录中的地图,但不导出子文件夹。
import arcpy, os
arcpy.env.workspace = ws = r"C:\Users\162708\Desktop\Burn_Zones"
for subdir, dirs, files in os.walk(ws):
for file in files:
mxd_list = arcpy.ListFiles("*.mxd")
for mxd in mxd_list:
current_mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd))
pdf_name = mxd[:-4] + ".pdf"
arcpy.mapping.ExportToPDF(current_mxd, pdf_name)
del mxd_list
我无法通过子文件夹迭代我做错了什么?
谢谢!
答案 0 :(得分:0)
通过os.walk结果迭代你应该给出包含(path, dirs, files)
的元组(元组中的第一个是包含files
的当前路径,这就是我倾向于这样命名的原因)。当前目录不会自动更改,因此您需要将其合并到您arcpy.ListFiles
这样的路径中:
arcpy.ListFiles(os.path.join(path, "*.mxd"))
您还应该删除循环for file in files
。您似乎每个目录都要导出文件,那么为什么每次为每个文件导出整个目录呢?
此外,您应将arcpy.mapping.MapDocument(os.path.join(ws, mxd))
更改为arcpy.mapping.MapDocument(os.path.join(path, mxd))
,其中path
再次是os.walk
的第一个元素。