writing arcpy.GetMessages() to a text file?

07-05-2018 02:50 PM
New Contributor III

Is there anything wrong with this very simplistic way of writing geo-processing messages to a plain text file? Being new to Python, I was surprised it was this easy....I must be overlooking something!

To clarify, I am intending to write the messages from the last tool which was invoked in the script.

f = open(resultLogFile, "a")

s = str(arcpy.GetMessages())

0 Kudos
7 Replies
MVP Legendary Contributor

It works... use it... if there was more than 1 message you could get fancy with string formatting

#s = str(arcpy.GetMessages())

messages = [1, 'two', 'three']  # a substitute for your s... no need to convert to str

s = ("Script messages returned...\n" + "\n{}"*len(messages)).format(*messages)


# print or save... this is the return

Script messages returned...

New Contributor III

Thanks Dan. I do have multiple messages (potentially hundreds)....but my three lines of code seems to handle this. Every message ends up on its own line in the text file.

So you know how much of a noob I am at Python....I'm not even sure what you're doing with the curly-brackets or asterisk. Will do some edumacating and see what that's about. Thanks!

0 Kudos
MVP Esteemed Contributor

A slightly more compact, and more Pythonic way, would be to use a Python with statement:

with open(resultLogFile, "a") as f:
MVP Esteemed Contributor

I like that... a lot!

That should just about do it....
0 Kudos
MVP Legendary Contributor

although starred expressions and assignment expressions are as simple as you can get


0 Kudos
by Anonymous User
Not applicable


How do you script out the location of the txt file / is there more to the script than what has been shared on this thread.

I am wanting to extract the Message from geocoding results and log them in a txt file with the corresponding txt file that is created when you "Save A Python Script", since doing that does not bring along the messages.

In this thread it is said to manually copy and paste the messages to a txt file directly from the GP History log pane in Pro





It would be nice to be able to run weekly geocoder rebuilds and geocode our address data against our actual and theoretical address ranges along with a fishbone analysis to track and log the progress and accuracy of our address data, especially since this data is shared with our communications people.


0 Kudos