Leyendo indentaciones de Python en archivos dentro de un proyecto.
En la documentación de Python aquí se explica cómo se calculan las indentaciones durante la programación con Python. Aquí hay otra explicación, además de esto:
Por ejemplo:
if foo:
if bar:
x = 42
else:
print foo
es analizado como:
<if> <foo> <:> [0]
<INDENT> <if> <bar> <:> [0, 4]
<INDENT> <x> <=> <42> [0, 4, 8]
<DEDENT> <DEDENT> <else> <:> [0]
<INDENT> <print> <foo> [0, 2]
<DEDENT>
Ahora, me pregunto si estos datos sobre los espacios de indentación, dentro de corchetes []
, se guardan en algún lugar, o si puedo leerlos de alguna manera para cada archivo en un proyecto de Python.
¡Gracias por cualquier sugerencia!
davy.ai
Como experto en tecnología de la información especializado en Python-3.x, análisis léxico, parsing e indentación, puedo confirmar que la información sobre los espacios de indentación dentro de los corchetes
[]
no se guarda en ningún lugar de manera predeterminada. Sin embargo, puede utilizar el módulotokenize
incorporado de Python para generar una secuencia de tokens a partir de una cadena de código. Estos tokens contienen información sobre el número de línea, la posición de columna y el tipo de cada léxico en el código, incluyendo los tokens de indentación.Para extraer información sobre la indentación de un archivo Python, puede utilizar el siguiente fragmento de código:
Este código lee el archivo ‘example.py’ línea por línea y genera una secuencia de tokens utilizando
tokenize.generate_tokens()
. La listaindent_levels
realiza un seguimiento del nivel de indentación actual, que se incrementa cada vez que se encuentra un tokenINDENT
y se decrementa cada vez que se encuentra un tokenDEDENT
. Si se detecta una longitud de indentación inválida, se imprime un mensaje de error.Con este código, puede extraer y analizar los niveles de indentación para cada línea de código en un proyecto Python.