Después de asistir a muchos alumnos en numerosos cursos SIG con Python dentro de entornos de ArcGis y OpenSource, casi siempre nos encontramos con los mismos tipos de errores. A continuación os hacemos un resumen de los 10 más comunes:
1 – Tipográficos: Sin duda, no escribir las cosas correctamente es el error más común. Por ejemplo, nombrar una variable en una parte del código de una forma e intentar usarla más abajo con otro nombre distinto
2 – Python diferencia entre mayúsculas y minúsculas (Case sensitive): Es un error similar al tipográfico. No debemos olvidar que Python no considera igual una ‘M’ que una ‘m’.
3- Identación (Espaciados, sangrías o tabuladores) : Python usa los tabuladores como la vía para determinar el final de las instrucciones cosa que sí ocurre en otros lenguajes. Los bloques de código vienen definidos por su identación y cuando hablamos de “Bloques de código” estamos haciendo referencia a funciones, sentencias ‘if’, bucles ‘for’ y ‘while. Cuando identamos iniciamos un bloque de código y cuando deshacemos la identación lo finalizamos. Este espaciado no requiere que usemos un número determinado de carácteres. Sencillamente debe ser coherente. Es decir, el mismo que usamos al principio se debe usar al final.
4- Uso de los dos puntos ‘:’ Al inicio de los bloques de código: if, while, for, try, with.
5 – Nombres de variables con letras o guiones bajos ‘_‘: Otro error común. Al definir una variable nos olvidamos de que estas no deden empezar por números u otros carácteres especiales
6 – Inicializar variables: En Python no puedes usar una variable sin antes haberle dado un valor. Recuerda definir valores como : contadores a 0, listas a [], etc
7 – Extensiones por defecto en Windows: No olvidéis guardar los scripts con extensión .py
- Ojo cuando escribáis código en ficheros de word. Suele guardar caracteres especiales que impiden la ejecución del código
- Más acerca de la identación. Comienza a escribir el código en la parte superior izquierda y sin ningún espacio
- Usa paréntesis para llamar a funciones. Tanto si llevan parámetros como si no dedes incluis paréntesis
8 – Barras y contrabarras en Paths:
No uses una contrabarra para definir paths . Python entiende este carácter como un carácter de escape. Soluciones:
MAL
C:\
BIEN
r “c: \ data \ myshapefile.shp”
“c: \ \ data \ \ myshapefile.shp”
“c :/ data / myshapefile.shp”
https://www.python.org/download/
Eso serian 10 errores de novato en Python, ARCGIS no se que tiene que ver en ninguno de los errores.
Por cierto, esto es muy WTF:
“Ojo cuando escribáis código en ficheros de Word. Suele guardar caracteres especiales que impiden la ejecución del código”
Lo que me sorprende no es que alguien que no conozca la programación intente escribir código en Word (cosa relativamente comprensible ya que muchas veces es la única manera que conocen de ‘escribir’ en un ordenador), lo que me sorprende es que solo los adviertas con un ‘OJO’, y no lo clasifiques como lo que es: una aberración satánica (y ridícula) que te condenará a los siete infiernos de la programación.
Que si usas Windows y no tienes ningún IDE, tampoco es tan difícil instalar Notepad++. Vivirán mejor. 🙂
Excelente aporte, gracias Alberto..
Buen artículo, aunque coincido con ferran en que los fallos que comentas son los comunes que comenten los principiantes en Python, pero nada que tienen que ver con ArcGIS. Algunos de los fallos más comunes de Python en ArcGIS serían por ejemplo:
-No saber que tipo de objeto retorna una función concreta de arcpy
-Olvidarse de borrar cursores o punteros a mapas una vez utilizados, y encontrarse con “bloqueos” (locks) inesperados
-Tratar a los cursores como listas normales… (sino llamamos al método reset() no podemos recorrerlos de nuevo).
-Olvidarse de llamar a los métodos para “checkear” las extensiones que utilicemos cuando trabajamos directamente en un script desde fuera de ArcMap o ArcCatalog.
-Hacerse un lío con el acceso a geometrías. Cada geometría es un Array de Arrays de puntos (las famosas multipartes), y los “huecos” vienen precedidos de puntos “nulos”.
-Añadir un Error con arcpy.AddError NO detiene el script, solamente añade un mensajito (eso sí, de error) a la pila de mensajes).
-El módulo arcpy.mapping trabaja con capas (Layer) y no con rutas. Es necesario llamar a arcpy.Layer(path) para crear la capa que queremos añadir.
Estas son las específicas que se me ocurren a bote pronto, eso sí específicas para ArcGIS.
Y una última recomendación a los que se inicien en esto, es importante elegir bien los cursos de Python para ArcGIS. Python es un poco como el poker texas holdem… se tarda 20 min en aprender lo básico, pero dominarlo… es otra historia. Hay muchos sitios que están “vendiendo” cursos de python para ArcGIS por gente que aunque tenga experiencia con ArcGIS NO tiene experiencia en programación.
PD. Según una sentencia del tribunal constitucional, MS Word tiene una orden de alejamiento ante cualquier lenguaje de programación. No se puede acercar más de 500 m a ninguno. 😉
Mil gracias por el aporte Geolovic. Efectivamente la cantidad d errores con los que nos podemos encontrar es enorme. Aquí enumeramos los que se encuentran los alumnos de nuestros cursos de ArcMap y python el 90 % de las ocasiones.
Si te parece, por ser muy aclarador tu comentario, lo voy a incluir en el post.
Muchas gracias!
Muchas gracias. Me reitero en que vuestra página es muy muy recomendable. Se la recomendaré a mis alumnos cuando me pregunten por cursos más específicos de SIG!.
Gran trabajo!
Muchas gracias J. Vicente!!. Tantas buenas palabras de todo un experto en la materia se agradecen.
Por cierto, que no se me malinterprete mi comentario anterior. En geospatialtraining SI que tienen a gente muy preparada para ofrecer cursos de Python para ArcGIS (a programar, aunque sea Python, te debe de enseñar un informático, sino tendrás que andar el camino dos veces como me pasó a mi). Desconfiad de aquellos que nunca antes hayan ofrecido este tipo de cursos y “de repente” los incluyan en sus catálogos.