Tengo un código de Python que tiene una sangría inconsistente. Hay una gran cantidad de pestañas y espacios para empeorar la situación, e incluso no se conserva la sangría del espacio.
El código funciona como se esperaba, pero es difícil de mantener.
¿Cómo puedo arreglar la sangría (como HTML Tidy , pero para Python) sin romper el código?
autopep8
proporciona sangría y mucho más: stackoverflow.com/questions/14328406/…Respuestas:
Use el
reindent.py
script que encuentre en elTools/scripts/
directorio de su instalación de Python:Eche un vistazo a ese script para obtener instrucciones detalladas de uso.
fuente
python-examples
paquete.python-examples
esté instalado, encontrará reindent en/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py
.Si estás usando Vim , mira
:h retab
.Por ejemplo, si simplemente escribe
todas tus pestañas se expandirán en espacios.
Es posible que desee
para asegurarse de que las líneas nuevas no usarán pestañas literales.
Si no estás usando Vim,
reemplazará las pestañas con espacios, suponiendo que las pestañas se detengan cada 8 caracteres, en
file.py
(con el original yendo afile.py.bak
, por si acaso). Reemplace los 8 con 4 si sus tabulaciones son cada 4 espacios.fuente
Alcanzaría autopep8 para hacer esto:
Nota: E101 y E121 son sangría pep8 (creo que simplemente puede pasar
--select=E1
para solucionar todos los problemas relacionados con la sangría, aquellos que comienzan con E1).Puede aplicar esto a todo su proyecto usando la bandera recursiva:
Consulte también Herramienta para convertir código Python para que sea compatible con PEP8 .
fuente
autopep8
falla si la sintaxis es incorrecta. puedes confirmar eso usandopython -tt <file.py>
autopep8 -i script.py
Usa autopep8
autopep8
Formatea automáticamente el código de Python para cumplir con laPEP 8
nullstyle
guía. Utiliza lapep8
utilidad para determinar qué partes de lasnullcode
necesidades deben formatearse.autopep8
es capaz de solucionar la mayoría de losnullformatting
problemas que pueden ser reportados porpep8
.fuente
Usando Vim, no debería ser más complicado que golpear Esc, y luego escribir ...
... en el archivo que desea cambiar. Eso convertirá todas las pestañas a cuatro espacios. Si también tiene un espaciado inconsistente, entonces será más difícil.
fuente
También hay PythonTidy (ya que dijiste que te gusta HTML Tidy).
Sin embargo, puede hacer mucho más que simplemente limpiar pestañas. Si te gusta ese tipo de cosas, vale la pena echarle un vistazo.
fuente
En la mayoría de los sistemas tipo UNIX, también puede ejecutar:
desde la línea de comando, cambiando el número si desea reemplazar las pestañas con una cantidad de espacios distintos a 4. Puede escribir fácilmente un script de shell para hacer esto con un montón de archivos a la vez, conservando los nombres de archivo originales.
fuente
Si eres flojo (como yo), también puedes descargar una versión de prueba de Wingware Python IDE, que tiene una herramienta de reparación automática para sangría en mal estado. Funciona bastante bien http://www.wingware.com/
fuente
El guión reindent no funcionó para mí, debido a que faltaba algún módulo. De todos modos, encontré este
sed
comando que hace el trabajo perfecto para mí:fuente
Prueba Emacs. Tiene buen soporte para la sangría necesaria en Python. Por favor, consulte este enlace http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
fuente
Pruebe IDLE y use Alt+ Xpara encontrar la sangría.
fuente
Tengo una solución simple para este problema. Primero puede escribir ": retab" y luego ": retab!", Entonces todo estaría bien
fuente
:retab
" en qué contexto. En vim ?En caso de intentar encontrar una herramienta para hacer que su
2-space indented
script de Python sea unatab indented
versión, simplemente use esta herramienta en línea:https://www.tutorialspoint.com/online_python_formatter.htm
fuente