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:
祝你好运!
汤姆
我有一个正在使用 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:
祝你好运!
汤姆