走进子目录而不是wokring

时间:2016-12-08 14:41:49

标签: python

我正在尝试导出我子目录中的所有地图。

我有要导出的代码,但我无法弄清楚在哪里添加循环,这将使它为所有子目录执行此操作。目前,它正在导出目录中的地图,但不导出子文件夹。

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

我无法通过子文件夹迭代我做错了什么?

谢谢!

1 个答案:

答案 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的第一个元素。