Eu tenho algum código Python que tem recuo inconsistente. Há muita mistura de abas e espaços para piorar a situação, e nem o recuo do espaço é preservado.
O código funciona conforme o esperado, mas é difícil de manter.
Como posso corrigir o recuo (como HTML Tidy , mas para Python) sem quebrar o código?
autopep8
fornece recuo e muito mais: stackoverflow.com/questions/14328406/...Respostas:
Use o
reindent.py
script que você encontra noTools/scripts/
diretório da sua instalação do Python:Dê uma olhada nesse script para obter instruções detalhadas de uso.
fonte
python-examples
pacote.python-examples
instalado, você encontrará reindent em/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py
.Se você estiver usando o Vim , consulte
:h retab
.Por exemplo, se você simplesmente digitar
todas as suas guias serão expandidas em espaços.
Você pode querer
para garantir que novas linhas não usem guias literais.
Se você não estiver usando o Vim,
substituirá as guias por espaços, assumindo que as tabulações sejam interrompidas a cada 8 caracteres, em
file.py
(com o original indo parafile.py.bak
, apenas no caso). Substitua os 8s por 4s se as paradas de tabulação estiverem a cada 4 espaços.fonte
Eu alcançaria o autopep8 para fazer isso:
Nota: E101 e E121 são recuos pep8 (acho que você pode simplesmente passar
--select=E1
para corrigir todos os problemas relacionados ao recuo - aqueles começando com E1).Você pode aplicar isso a todo o seu projeto usando sinalizador recursivo:
Consulte também Ferramenta para converter código Python para ser compatível com PEP8 .
fonte
autopep8
falhará se a sintaxe estiver incorreta. você pode confirmar que o usopython -tt <file.py>
autopep8 -i script.py
Usar autopep8
autopep8
formata automaticamente o código Python de acordo com oPEP 8
nullstyle
guia. Ele usa opep8
utilitário para determinar quais partes dasnullcode
necessidades precisam ser formatadas.autopep8
é capaz de corrigir a maioria dosnullformatting
problemas relatados porpep8
.fonte
Usando o Vim, não deve estar mais envolvido do que bater Esce digitar ...
... no arquivo que você deseja alterar. Isso converterá todas as guias em quatro espaços. Se você tiver espaçamento inconsistente também, será mais difícil.
fonte
Também existe o PythonTidy (desde que você disse que gosta do HTML Tidy).
No entanto, ele pode fazer muito mais do que apenas limpar as guias. Se você gosta desse tipo de coisa, vale a pena dar uma olhada.
fonte
Na maioria dos sistemas UNIX, você também pode executar:
na linha de comando, alterando o número se desejar substituir as guias por um número de espaços diferente de 4. É possível escrever facilmente um script de shell para fazer isso com vários arquivos de uma só vez, mantendo os nomes dos arquivos originais.
fonte
Se você é preguiçoso (como eu), também pode fazer o download de uma versão de teste do Wingware Python IDE, que possui uma ferramenta de correção automática para indentação ruim. Funciona muito bem. http://www.wingware.com/
fonte
O script reindent não funcionou para mim, devido a algum módulo ausente. Enfim, encontrei este
sed
comando que faz o trabalho perfeito para mim:fonte
Experimente o Emacs. Ele possui um bom suporte para recuo necessário em Python. Por favor, verifique este link http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
fonte
Tente IDLE e use Alt+ Xpara encontrar o recuo.
fonte
Eu tenho uma solução simples para esse problema. Você pode primeiro digitar ": retab" e depois ": retab!", Então tudo ficaria bem
fonte
:retab
" em que contexto. No Vim ?No caso de tentar encontrar uma ferramenta para transformar seu
2-space indented
script python em umatab indented
versão, basta usar esta ferramenta online:https://www.tutorialspoint.com/online_python_formatter.htm
fonte