Arcpy 使用指定图层报告所有 MXD

Arcpy Report all MXDs using specified Layer

我有一个正在使用 python 2.7 和 arcpy 插件编写的代码。 用户将插入一个图层文件和一个根目录进行搜索。 该代码将 os.walk 目录并找到每个 .MXD 文件。然后它将在每个 .MXD 文件中搜索指定的 .SHP 文件。如果 .MXD 报告使用请求的 .SHP,它将记录该 .MXD 文件。

其中 lyr = E1.get() 并且是正在搜索的 .shp 文件。

lyr = E1.get()    
for root, dirs, files in os.walk(path):
                for name in files:
                    basename, extension = os.path.splitext(name)
                    if extension == '.mxd':
                        fullPath = os.path.join(root,name)
                        mxd = arcpy.mapping.MapDocument(fullPath)
                        DataList = arcpy.mapping.ListLayers(mxd)
                        for item in DataList:
                            if item == lyr:
                                LOG_ME = mxd
                                l.info(LOG_ME)
                            else:
                                pass
                    else:
                        pass

日志文件是在程序运行时创建的,但从不填充任何数据。我没有收到任何错误,即使在我知道包含使用指定 .SHP 的 .MXD 的目录中也是如此 我也试过

for item in DataList:
    if lyr in item:
        log

if lyr in DataList:
    log

知道问题出在哪里吗?

我相信问题可能出在你的比较上

if item == lyr:

请注意,arcpy.mapping.ListLayers returns 图层对象列表,而不是图层名称列表。

尝试将比较更改为

if item.name == lyr:

祝你好运!

汤姆