for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr): if not sc in searchfile.readlines(): print sc
if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr)
Traceback (most recent call last): File "C:\Python26\ArcGIS10.0\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 323, in RunScript debugger.run(codeObject, __main__.__dict__, start_stepping=0) File "C:\Python26\ArcGIS10.0\Lib\site-packages\Pythonwin\pywin\debugger\__init__.py", line 60, in run _GetCurrentDebugger().run(cmd, globals,locals, start_stepping) File "C:\Python26\ArcGIS10.0\Lib\site-packages\Pythonwin\pywin\debugger\debugger.py", line 655, in run exec cmd in globals, locals File "C:\Users\kyanuk\Desktop\changesearch.py", line 16, in <module> for sc in arcpy.ListFields(lyr): File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\__init__.py", line 787, in ListFields return gp.listFields(*args) File "C:\Program Files (x86)\ArcGIS\Desktop10.0\arcpy\arcpy\geoprocessing\_base.py", line 342, in listFields self._gp.ListFields(*gp_fixargs(args))) IOError: "SIDEWALK" does not exist
Solved! Go to Solution.
for sc in arcpy.ListFields(lyr):
for sc in arcpy.ListFields(lyr.dataSource):
for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr.dataSource): if not sc.name in searchfile.readlines(): print sc.name
for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr): if not sc.name in searchfile.readlines(): print sc.name
Hi Kevin,
"for sc in arcpy.ListFields(lyr)" will return a field object. Try specifying the 'name' property for this object. Ex:for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr): if not sc.name in searchfile.readlines(): print sc.name
print lyr.name,type(lyr)line...
Can you attach a sample of your text file?
for sc in arcpy.ListFields(lyr):
for sc in arcpy.ListFields(lyr.dataSource):
for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr.dataSource): if not sc.name in searchfile.readlines(): print sc.name
I think I may have figured out what is wrong. Since the ListFields function is not part of the 'mapping' module, it needs to read the full path of the layer.
Replace:for sc in arcpy.ListFields(lyr):
with:for sc in arcpy.ListFields(lyr.dataSource):
Entire code:for de in searchfile.readlines(): if '--' in de: fc=de.split('--') for lyr in arcpy.mapping.ListLayers(mxd): if lyr.name==fc[1].split('\n')[0]: print lyr.name,type(lyr) for sc in arcpy.ListFields(lyr.dataSource): if not sc.name in searchfile.readlines(): print sc.name