走进子目录而不是wokring

2024-04-19 18:24:32 发布

您现在位置: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

我做错了什么,它不能遍历子文件夹?你知道吗

谢谢你!你知道吗


Tags: 代码namein文件夹forwspdfos
1条回答
网友
1楼 · 发布于 2024-04-19 18:24:32

遍历os.步行结果您应该给出包含(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的第一个元素。你知道吗

相关问题 更多 >