Solved

Print to screen and save output to file

Posted on 2009-07-16
6
772 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
  • 3
  • 3
6 Comments
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 435 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
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

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 435 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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Less strange, but still introduction This introduction was added (1st August, 2011) to reflect some reactions.  Firstly, the term basics in the title of the article...  As any other word, it is a symbol with meaning attached to the word by some a…
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 walks through the best practices in adding a local business to Google Maps including how to properly search for duplicates, marker placement, and inputing business details. Login to your Google Account, then search for "Google Mapmaker…

762 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

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now