Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Print to screen and save output to file

Posted on 2009-07-16
6
Medium Priority
?
795 Views
Last Modified: 2012-05-07
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

0
Comment
Question by:justearth
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
6 Comments
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 1740 total points
ID: 24871439
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
 

Author Comment

by:justearth
ID: 24871493
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
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24871505
Remove the > character:

c:\python24\python.exe "C:\getgridprop.py" "c:\tmin\tminpro" c:\downloads\tmin_avg.txt
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:justearth
ID: 24871616
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
 
LVL 39

Assisted Solution

by:Roger Baklund
Roger Baklund earned 1740 total points
ID: 24871745
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
 

Author Closing Comment

by:justearth
ID: 31604321
thanks again.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A set of related code is known to be a Module, it helps us to organize our code logically which is much easier for us to understand and use it. Module is an object with arbitrarily named attributes which can be used in binding and referencing. …
Sequence is something that used to store data in it in very simple words. Let us just create a list first. To create a list first of all we need to give a name to our list which I have taken as “COURSE” followed by equals sign and finally enclosed …
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
This tutorial demonstrates how to identify and create boundary or building outlines in Google Maps. In this example, I outline the boundaries of an enclosed skatepark within a community park.  Login to your Google Account, then  Google for "Google M…

660 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question