[Tutor] Checking Syntax
Emile van Sebille
emile at fenx.com
Thu Jun 18 22:47:21 CEST 2009
On 6/18/2009 12:55 PM Kevin Pearson said...
> I am teaching myslef Python from a GIS tutorial
> 'Writing_Geoprocessing_Scripts.pdf'.
> I have typed everything exactly like it is in the tutorial and when I go
> to run a check on the sytax (before I try running the program) it places
> a cursor like so:
> outFeatureClas|s = outWorkspace + "/" +
> GP.ValidateTableName(fc,outWorkspace)
> I have checked the tutorial and I can't see what is wrong. I can't get
> past this until it is corrected.
> I have attached the script.
> Any advice would be greatly appreciated.
> Thanks,
> Kevin
>
> #Import standard library modules
> #imports system, operating system & Windows 32 modules
> #sys refers to Python system, os refers to acess to operating system
> import win32com.client, sys, os
> #Create the Geoprocessor object
> GP = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
> #Set the input workspace
> #argv = argument value
> #argv[1] is the name of the script
> GP.workspace = sys.argv[1]
> #Set the clip featureclass
> clipFeatures = sys.argv[2]
> #Set the output workspace
> outWorkspace = sys.argv[3]
> #Set the cluster tolerance
> clusterTolerance = sys.argv[4]
> #try statement defines the beginning of a block of code that will be
> #handled by its associated exception handler, or except statement
> #try/except statements are used to handle unexpected errors
> #this defines that the program should do when an exception happens
> try:
> #Get a list of the featureclasses in the input folder
> fcs = GP.ListFeatureClasses()
> #Loop through the list of feature classes
> #always reset a list so the first item is extracted
> #so you can be sure you get the first item in the list
> fcs.Reset()
> fc = fcs.Next()
> while fc:
I don/t know if this is the only case, but certainly you'll need to
increase indentation level after any lines ending in a colon that
indicate the start of a block. This type of error can cause cryptic
messages to the thrown up that don't always point to the actual problem.
HTH,
Emile
> #Validate the new feature class name for the output workspace.
> #ValidateTableName ensures output name is valid for output
> #workspace, it returns unique name so no existing data is overwritten.
> outFeatureClass = outWorkspace + "/" + GP.ValidateTableName(fc,
> outWorkspace)
> #Clip each feature class in list with the clip feature class.
> #Do not clip the clipFeatures, it may be in the same workspace.
> if str(fc) != str(os.path.split(clipFeatures)[1]):
> GP.Clip(fc, clipFeatures, outFeatureClass,
> clusterTolerance)
> fc = fcs.Next()
> except:
> #except statement is required by the earlier try statement
> #if an error occurs during execution the code in the except
> #block will run
> GP.AddMessage(GP.GetMessages(2))
> print GP.GetMessages(2)
>
>
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list