Cómo depurar código Python con PyScripter

Anuncio
Cómo depurar código Python con
PyScripter
En este post vamos a daros las claves para aprovechar el uso de PyScripter
como editor de código de Python para ArcGIS, tanto para escribir código como
para la detección y corrección de errores de programación.
Ventajas de usar PyScripter
Utiliza diferentes colores, indenta y comenta el código de modo
rápido, subraya una palabra determinada, busca y reemplaza, etc.
Es personalizable: colores, plantillas, fragmentos completos de
código, etc.
Tiene predicción de código fuente, que agiliza nuestro trabajo y evita
que cometamos errores de escritura.
Las ventanas del IDE y de depuración, entre las que destacamos la
ventana de Variables y la ventana Intérprete ayudan durante la
ejecución del script al seguimiento del código.
La utilización de un IDE como PyScripter facilita el trabajo y reduce la
posibilidad de introducir errores en nuestros programas. Aún así cometeremos
fallos, sobre todo al principio, que es cuando precisamente más nos van a
entorpecer.
¿Cómo reparar nuestros errores?
Un 50% del error se soluciona cuando descubrimos DONDE ESTÁ EL ERROR.
El otro 50% se soluciona cuando descubrimos POR QUÉ SE HA PRODUCIDO EL ERROR.
Respecto al primer punto, para localizar el error debemos aprender a DEPURAR
EL CÓDIGO. PyScripter cuenta con una barra de herramientas de depuración:
Depurar código: Opción 1 –> ejecutando línea por línea: usaremos esta opción
cuando creamos saber dónde está el error, para parar en ese punto y examinar
el comportamiento del programa, los valores que adoptan las variables, etc.
1.1
Situando el cursor en la línea del script en la que queremos
interrumpir la ejecución automática y pulsando la flecha azul “Ejecutar hasta
el cursor” o F4. A partir del punto de interrupción cada línea de código se
ejecutará cuando el usuario pulse el icono “Avanzar hasta la siguiente línea”
o F8, de este modo localizamos la sentencia que falla y los valores que el
programa está interpretando.
1.2
Fijando nuestros puntos de interruptor con el círculo rojo “Conmutar
punto de parada” o F5 sobre cada línea en la que queramos conmutar parada y
pulsando la flechita verde con bicho“Depurar” o F9.
Depurar código: Opción 2 –> ejecutando fragmentos de código: utilizaremos
esta opción cuando sabemos que el programa funciona antes de haber incluido
nuevas sentencias, y queremos comprobar el funcionamiento de las mismas sin
tener que ejecutar para ello el script completo.
Resaltando
las líneas que nos interesan y pulsando Ctl+F7, o con botón
derecho Source Code/Ejecutar Selección.
¿Cómo capturar los errores?
En cuanto a la segunda cuestión: porqué ha fallado nuestro programa, podemos
“capturar el error” y mostrarlo en la ventana Intérprete de PyScripter. Para
ello tendremos que utilizar la estructura try & except . Con esta estructura
el programa intenta (try) ejecutar todo el código que se encuentre indentado
dentro del bloque try:. Si se produce un fallo, el código se dirige al bloque
except: en el que se mostrará el mensaje de error generado.
¿Cuales son los errores más típicos y cómo se interpretan?
El siguiente listado muestra los errores más típicos y el mensaje de error
que muestra la ventana intérprete:
1.- Case Sensitive: Python diferencia las mayúsculas y minúsculas. Ojo con
darle un nombre a una variable y pretender usarla llamándola de otro modo.
El mensaje de error que se genera depende del la palabra en la que se
encuentre la confusión: si se trata del nombre de una capa o de una ruta, el
mensaje mostrado nos dirá que no existe dicha capa o que no se localiza:
“Input Features:
xxx.shp does not exist or is not supported”. Puede incluso
no generarse ningún error, pero no darnos la respuesta que queremos.
2.- Indentación: en
Python
cada bloque de código debe ir sangrado para que
el intérprete lo identifique y diferencie.
Los fallos de indentación detectados quedan marcados en rojo, además si
intentamos ejecutar el script se mostrará el mensaje “IndentationError:
expected an indented block”.
Ojo, puede que el código funcione, pero una frase mal indentada puede cambiar
el curso del programa y su resultado.
3.- Importación de módulos. Antes de trabajar con alguna herramienta de una
librería específica debemos importar esta librería. En nuestro caso, si
queremos trabajar con la ArcPy para ArcGIS debemos incluir al principio del
programa un “import ArcPy”
El mensaje de error que nos da en caso de no haber importado la Arcpy es
“name ‘arcpy’ is not defined”
4.-Símbolo de igualdad y símbolo de asignación de valor. Cuando Python quiere
darle un valor a una variable lo hace a través del símbolo “=”. Cuando
queremos comprobar si un valor es igual a otro utilizaremos el símbolo “==”.
El mensaje de error en una sentencia como “if coordX = 3500:” será
“SyntaxError:
invalid syntax”.
5.- Condiciones y bucles mal construidos. Además de la indentación del
código, estas construcciones requieren que la primera frase finalice con el
símbolo “:”.
El mensaje de error en una sentencia como “if coordX = =3500” será
igualmente “SyntaxError:
La sentencia correcta es:
invalid syntax”.
if coordX = =3500:
coordY = 47000
6.- Incorrecta definición de una ruta. En Python la contrabarra “\” forma
parte de sentencias clave como “\n” (nueva línea) o “\t” (tabulador). Una
ruta debe precederse de la letra “r” o sustituir el símbolo “\” por “\\” o
por “/”.
Ojo además con los acentos, los espacios en blanco y las mayúsculas
y minúsculas.
El mensaje de error puede ser si se trata de la ubicación de una capa
Features:
“Input
xxx.shp does not exist or is not supported”, o si se trata de la
identificación de un espacio de trabajo, en cuyo caso, puede tomar un valor
como nulo y por tanto no localizar los datos de ese workspace.
7.- Parámetros mal introducidos: en número o en orden. Centrándonos en el uso
de herramientas de ArcGIS, aunque también es un error típico de otro tipo de
funciones, debemos saber qué argumentos requiere cada herramienta, de qué
tipo son y en qué orden deben introducirse.
El mensaje de error que se genera en este caso es “Failed to execute.
Parameters are not valid.”
Si te ha gustado
nuestro post de hoy compártelo y ayúdanos a seguir, muchas gracias!!
Descargar