I always get all types of errors, and would like to know if i can use the information in these error messages generated by arcpy to fix the issue and repeat the step where it occurred.

for example in batch merging:


and I get the following error:

   ExecuteError: ERROR 001156: Failed on input OID 0, could not write value 'Kanata' to output field ErrorCuasingField
Failed to execute (Merge).

How can I get the ErrorCausingField in my script, so i can maybe delete it before repeating the merging process.

Also I have a another question addressing this issue specifically: (Batch merging field mapping).

1 Answer 1


I added a call to get the traceback object to your previous script (Batch merging field mapping). I added a shapefile with an "Acres" field that was one character wide, and got this traceback message: ERROR 001156: Failed on input OID 0, could not write value '340.417' to output field Acres

My working version of your script, set up to run in Idle, is below.

import arcpy, sys, os, traceback
dataPath=r"C:\workspace\weld county\parcels"

    for dType in DataTypeL:
        matches = []

        for dirpath, dirnames, filenames in arcpy.da.Walk(dataPath,datatype="FeatureClass",type=Typei):
            for filename in filenames:
                print filename
                match = ( os.path.join(dirpath, filename))
                matches.append (match)
                counter = counter + 1 
        arcpy.Merge_management(matches, dataPath+"\\utilities"+Title)
        print counter
        print Typei
        #arcpy.AddMessage(counter+" "+Typei+" layers were merged into "+ filename)
except arcpy.ExecuteError: 
    # Get the tool error messages 
    msgs = arcpy.GetMessages(2) 

    # Return tool error messages for use with a script tool 

    # Print tool error messages for use in Python/PythonWin 
    print msgs

    # Get the traceback object
    tb = sys.exc_info()[2]
    tbinfo = traceback.format_tb(tb)[0]

    # Concatenate information together concerning the error into a message string
    pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
    msgs = "ArcPy ERRORS:\n" + arcpy.GetMessages(2) + "\n"

    # Return python error messages for use in script tool or Python Window

    # Print Python error messages for use in Python / Python Window
    print pymsg + "\n"
    print msgs
  • I'll try playing around with GetMessages, I can isolate the the field title if I know what the error message is, since I know it's position in the sentence (either from left or from right) in this case it's conveniently at the end.spaces should be useful in this case. thanks for information.
    – Solaire
    May 20, 2015 at 17:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.