J'ai du code Python avec une indentation incohérente. Il y a beaucoup de mélange d'onglets et d'espaces pour aggraver la situation, et même l'indentation de l'espace n'est pas préservée.
Le code fonctionne comme prévu, mais il est difficile à maintenir.
Comment puis-je corriger l'indentation (comme HTML Tidy , mais pour Python) sans casser le code?
autopep8
fournit essentiellement une indentation et bien plus encore: stackoverflow.com/questions/14328406/…Réponses:
Utilisez le
reindent.py
script que vous trouvez dans leTools/scripts/
répertoire de votre installation Python:Jetez un œil à ce script pour obtenir des instructions d'utilisation détaillées.
la source
python-examples
paquet.python-examples
installé, vous trouverez une réindentation dans/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py
.Si vous utilisez Vim , voir
:h retab
.Par exemple, si vous tapez simplement
tous vos onglets seront développés en espaces.
Vous voudrez peut-être
pour vous assurer qu'aucune nouvelle ligne n'utilisera de tabulations littérales.
Si vous n'utilisez pas Vim,
remplacera les tabulations par des espaces, en supposant que les tabulations s'arrêtent tous les 8 caractères, dans
file.py
(avec l'original dansfile.py.bak
, juste au cas où). Remplacez les 8 par 4 si vos taquets de tabulation sont tous les 4 espaces à la place.la source
Je parviendrais pour autopep8 faire ceci:
Remarque: E101 et E121 sont une indentation pep8 (je pense que vous pouvez simplement passer
--select=E1
pour résoudre tous les problèmes liés à l'indentation - ceux commençant par E1).Vous pouvez l'appliquer à l'ensemble de votre projet à l'aide d'un indicateur récursif:
Voir aussi Outil pour convertir le code Python en conformité avec PEP8 .
la source
autopep8
échoue si la syntaxe est incorrecte. vous pouvez confirmer qu'en utilisantpython -tt <file.py>
autopep8 -i script.py
Utiliser autopep8
autopep8
formate automatiquement le code Python pour se conformer auPEP 8
nullstyle
guide. Il utilise l'pep8
utilitaire pour déterminer quelles parties desnullcode
besoins doivent être formatées.autopep8
est capable de résoudre la plupart desnullformatting
problèmes pouvant être signalés parpep8
.la source
En utilisant Vim, cela ne devrait pas être plus compliqué que de frapper Esc, puis de taper ...
... sur le fichier que vous souhaitez modifier. Cela convertira tous les onglets en quatre espaces. Si vous avez également un espacement irrégulier, ce sera plus difficile.
la source
Il y a aussi PythonTidy (puisque vous avez dit que vous aimez HTML Tidy).
Il peut faire bien plus que simplement nettoyer les onglets. Si vous aimez ce genre de chose, ça vaut le coup d'oeil.
la source
Sur la plupart des systèmes de type UNIX, vous pouvez également exécuter:
à partir de la ligne de commande, en changeant le nombre si vous souhaitez remplacer les tabulations par un nombre d'espaces autres que 4. Vous pouvez facilement écrire un script shell pour le faire avec un tas de fichiers à la fois, en conservant les noms de fichiers d'origine.
la source
Si vous êtes paresseux (comme moi), vous pouvez également télécharger une version d'essai de Wingware Python IDE, qui dispose d'un outil de correction automatique pour l'indentation foiré. Cela fonctionne plutôt bien. http://www.wingware.com/
la source
Le script reindent n'a pas fonctionné pour moi, en raison d'un module manquant. Quoi qu'il en soit, j'ai trouvé cette
sed
commande qui fait le travail parfait pour moi:la source
Essayez Emacs. Il a un bon support pour l'indentation nécessaire en Python. Veuillez vérifier ce lien http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
la source
Essayez IDLE et utilisez Alt+ Xpour trouver l'indentation.
la source
J'ai une solution simple à ce problème. Vous pouvez d'abord taper ": retab" puis ": retab!", Alors tout irait bien
la source
:retab
" dans quel contexte. À Vim ?Si vous essayez de trouver un outil pour créer votre
2-space indented
script python dans unetab indented
version, utilisez simplement cet outil en ligne:https://www.tutorialspoint.com/online_python_formatter.htm
la source