import arcpy from arcpy import da import os inTable = arcpy.GetParameterAsText(0) nameField = arcpy.GetParameterAsText(1) fileLocation = arcpy.GetParameterAsText(2) desc = arcpy.Describe(inTable) attTable = desc.file + "__ATTACH" joinTable = arcpy.management.AddJoin(inTable, 'globalid', attTable, 'rel_globalid') with da.SearchCursor(joinTable, [attTable + '.data', desc.file + '.' + nameField, desc.file + '.objectid']) as cursor: for item in cursor: attachment = item filenum = str(item) + "_" filename = filenum + str(item) open(fileLocation + os.sep + filename, 'wb').write(attachment.tobytes()) del item del filenum del filename del attachment del cursor
This is the entire script that I have made, designed to find the attachment table based on the user's input table, create a join and then searchcursor through the cursor.
The script appeared to run successfully without errors, but no files were outputted (simple jpgs).
In order to test, I simplified the script down to the basic script ESRI provided in the links I inserted above:
import arcpy from arcpy import da import os inTable = r"Y:\GIS_Projects\****\****\****\ProdGIS.sde\****__ATTACH" fileLocation = r"\\dc01\profiles\****\Desktop\test" arcpy.AddMessage("Test") with arcpy.da.SearchCursor(inTable, ['data', 'att_name', 'attachmentid']) as cursor: arcpy.AddMessage("Test2") for item in cursor: arcpy.AddMessage("Test3") attachment = item filenum = "ATT" + str(item) + "_" filename = filenum + str(item) open(fileLocation + os.sep + filename, 'wb').write(attachment.tobytes()) del item del filenum del filename del attachment del cursor
I added a few arcpy.AddMessage's obviously to see where it is running. It outputs my test 1 and 2 fine, but 3 is never hit. File paths are correct, using ArcGIS Pro 2.8.1, using IDLE 3.7.10, Python 3.7.10.
The biggest issue here is that when I run it as a script via the toolbox, it runs fine with no errors but does not export my attachments. However, when I am editing it via IDLE (right click>edit) in ArcGIS Pro and then run the script from there, it executes perfectly.
What is the disconnect between running it in IDLE and ArcGIS Pro?
I checked for existence for inTable, attTable and joinTable. All exist, still no output. Running the script directly through IDLE heeds the desired results, but through ArcGIS I get nothing. Possibly a setting I have improperly configured? I have attached screenshots of my properties and parameters for the script.
I appreciate you linking your tool. It's very similar to what I've created, but I gave it a shot and unfortunately it is still not functioning properly. Seems like it's an ArcGIS issue, not a code issue.
This might be a stupid question, but is idle from the arcgis install, or did you install python 3.6 from another source? Is it worth removing all your python libraries and reinstalling from myesri?