[GIS] Outputting results message from spatial statistics tool to text file using Python

arcgis-10.0arcgis-desktoparcpypythonspatial statistics

I'm using the following tool in ArcGIS 10 – Calculate Distance Band from Neighbor Count (Spatial Statistics). I'm using a python script to execute this tool several times on different shapefiles:

    import arcpy
    arcpy.env.workspace = "c:/data"
    mindist, avgdist, maxdist = arcpy.CalculateDistanceBand_stats("Blocks1", 1, "EUCLIDEAN_DISTANCE")
    mindist, avgdist, maxdist = arcpy.CalculateDistanceBand_stats("Blocks2", 1, "EUCLIDEAN_DISTANCE")
    mindist, avgdist, maxdist = arcpy.CalculateDistanceBand_stats("Blocks3", 1, "EUCLIDEAN_DISTANCE")

At the moment, this outputs the 3 result values to the Results-Messages window in ArcMap 10, overwriting the past results each time. Is there any way I can write these values to a text file after each execution of the tool using python code. If possible I would like to run this on many shapefiles and write the output values to the same text file. If a text file isn't feasible, then anything that can store this information will suffice.

Best Answer

you can do this with some python bindings as here. You can further enhance the code.

from datetime import datetime

stime = datetime.now()

filename = "path/to/log_%s.txt" % (stime)

if not os.path.exists(filename ):
    os.makedirs(filename)    

f = open(filename, 'a')
f.write(stime + ' :  ' + mindist, avgdist, maxdist)
f.close

beside this you can use python logging module too. more information here and here...

import logging
logger = logging.getLogger('myapp')
hdlr = logging.FileHandler('/var/tmp/myapp.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.WARNING)

logger.error('We have a problem')
logger.info('While this is just chatty')

Result:

2003-07-08 16:49:45,896 ERROR We have a problem

i hope it helps you...