Print to screen and save output to file

Hello,

When I run this script now I do so from the command line like this:

c:\python24\python.exe "C:\getgridprop.py" "c:\tmin\tminpro" > c:\tmin\tmin_avg.txt

This saves the output but prints nothing to screen. As I easily get anxious is there to way save the output and print to screen? This way I'll know its working.  Also, is there a way to save only what what the "print" command outputs?  I'd like to uncomment the lines below and see them on screen but not saved to the output file.

Thanks,
JE
import arcgisscripting, sys, string, os
gp = arcgisscripting.create()
gp.overwriteoutput = 1
 
gp.workspace = sys.argv[1]
InFolder = sys.argv[1]
 
 
try:
    RasterClassList = gp.ListRasters()
    RasterClassList.Reset()
    RasterImage = RasterClassList.Next()
    #gp.AddMessage("\n" + "Getting Raster Properties")
    while RasterImage:
      #gp.AddMessage("Working on " + RasterImage)
      InFileName = InFolder + "/" + RasterImage
      InPropertyType = "MEAN"
      zmax = gp.GetRasterProperties (InFileName, InPropertyType)
      print RasterImage, zmax
      #gp.AddMessage(RasterImage + " Properties have been collected.")
      #gp.AddMessage("\n")
      RasterImage = RasterClassList.Next()
 
except:
    # Print error message if an error occurs 
    print gp.GetMessages()

Open in new window

justearthAsked:
Who is Participating?
 
Roger BaklundConnect With a Mentor Commented:
You could do something like below. Instead of redirecting standard output, write to a specific file. The name of the file is provided as the last parameter on the command line:

c:\python24\python.exe "C:\getgridprop.py" "c:\tmin\tminpro" c:\tmin\tmin_avg.txt

import arcgisscripting, sys, string, os
gp = arcgisscripting.create()
gp.overwriteoutput = 1
 
gp.workspace = sys.argv[1]
InFolder = sys.argv[1]
 
Outfile = open(sys.argv[2],'w')
 
try:
    RasterClassList = gp.ListRasters()
    RasterClassList.Reset()
    RasterImage = RasterClassList.Next()
    gp.AddMessage("\n" + "Getting Raster Properties")
    while RasterImage:
      gp.AddMessage("Working on " + RasterImage)
      InFileName = InFolder + "/" + RasterImage
      InPropertyType = "MEAN"
      zmax = gp.GetRasterProperties (InFileName, InPropertyType)
      Outfile.write(RasterImage + " " + str(zmax) + "\n")
      gp.AddMessage(RasterImage + " Properties have been collected.")
      gp.AddMessage("\n")
      RasterImage = RasterClassList.Next()
 
except:
    # Print error message if an error occurs 
    print gp.GetMessages()
 
Outfile.close()

Open in new window

0
 
justearthAuthor Commented:
cxr:

I get the following error message:

C:\Documents and Settings\Owner>c:\python24\python.exe "C:\Documents and Setting
s\Owner\Desktop\getgridprop2.py" "c:\downloads\tmin\tminpro" > c:\downloads\tmin
_avg.txt
Traceback (most recent call last):
  File "C:\Documents and Settings\Owner\Desktop\getgridprop2.py", line 8, in ?
    Outfile = open(sys.argv[2],'w')
IndexError: list index out of range

Please advise,
Thanks again,
JE
0
 
Roger BaklundCommented:
Remove the > character:

c:\python24\python.exe "C:\getgridprop.py" "c:\tmin\tminpro" c:\downloads\tmin_avg.txt
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
justearthAuthor Commented:
Thanks this worked.  Does the 'w' in this line -- Outfile = open(sys.argv[2],'w') -- mean that this file can be written in? And what would happen if you didn't include the 'str' in this line: Outfile.write(RasterImage + " " + str(zmax) + "\n")

Thanks again,
JE

0
 
Roger BaklundConnect With a Mentor Commented:
Yes, the 'w' means to open the file i write mode.

>> what would happen if you didn't include the 'str'

If zmax is an integer, you would get the error "TypeError: cannot concatenate 'str' and 'int' objects". If it is a float, you would get the error "TypeError: cannot concatenate 'str' and 'float' objects".
0
 
justearthAuthor Commented:
thanks again.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.