Exiting os.spawnv's subroutine

IamIan iansan at gmail.com
Tue Feb 21 17:56:07 EST 2006


My code is below. As a single script there is no pause at the end of
the processing as there is with using os.spawnv... I am using the
P_WAIT value, and wonder if it is responsible for the extra time at the
end of each iteration. Could it take longer for the processing to be
"successful" when run under os.spawnv? Is there a way to manually send
a "success" exit code back to os.spawnv, rather than waiting for it?
Thanks.

Main script:
# Import subprocess modules
import os, sys, win32com.client

# Define arguments for subprocess
pyPath = "C:\\Python21\\python.exe"
contourScript = "C:\\Ian\\Python scripts\\subProcess2.py"
workspace = "D:\\GIS\\Test"

# Get a list of IMG files in the workspace for Contouring
filenames = os.listdir(workspace)
filenames = [filename.lower()
for filename in filenames
if (filename[-4:].lower() == ".img" and filename[0:2] != "h_" )]
for filename in filenames:

    # Define filenames
    print "Filename is " + filename
    inImg = workspace + "\\" + filename
    outContour50 = workspace + "\\contour50_" + filename[:-4] + ".shp"
    outContour100 = workspace + "\\contour100_" + filename[:-4] +
".shp"
    outContour200 = workspace + "\\contour200_" + filename[:-4] +
".shp"
    outContour500 = workspace + "\\contour500_" + filename[:-4] +
".shp"

    # Create parameter list
    parameterList = []

    # First parameter is the name of the Python executable
    parameterList.append('python.exe')

    # Second parameter is the full path of the Python script
    parameterList.append(contourScript)

    # The following parameters are the arguments for the Batch script
    parameterList.append(inImg)
    parameterList.append(outContour50)
    parameterList.append(outContour100)
    parameterList.append(outContour200)
    parameterList.append(outContour500)

    # Run subprocess
    os.spawnv(os.P_WAIT, pyPath, parameterList)

print "All done!"


Secondary script:
# Import system modules
import sys, win32com.client

# Create the geoprocessor object
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")

# Confirm license availability
print "ArcInfo license is " + str(gp.CheckProduct("ArcInfo"))
gp.SetProduct("ArcInfo")
gp.CheckOutExtension("Spatial")

# Set arguments to be passed to main script
inImg = sys.argv[1]
outContour50 = sys.argv[2]
outContour100 = sys.argv[3]
outContour200 = sys.argv[4]
outContour500 = sys.argv[5]

badImgList = []

try:
    # For each IMG file, contour at 50, 100, and 200 meter intervals
    gp.Contour_sa(inImg, outContour50, "50", "0", "1")
    print "Successfully contoured at 50 meter interval!"

    gp.Contour_sa(inImg, outContour100, "100", "0", "1")
    print "Successfully contoured at 100 meter interval!"

    gp.Contour_sa(inImg, outContour200, "200", "0", "1")
    print "Successfully contoured at 200 meter interval!"

    gp.Contour_sa(inImg, outContour500, "500", "0", "1")
    print "Successfully contoured at 500 meter interval!"
except:
    badImgList.append(filename)
    print filename + " is no good! It's been added to the list!"




More information about the Python-list mailing list