286 votes

HOWTO: Correction de l'Indentation de Python

J'ai du code python qui ont incohérent de l'indentation, il y a beaucoup de mélange de tabulations et des espaces pour rendre l'affaire encore pire, même l'espace d'indentation n'est pas de préserver. Le code fonctionne comme prévu, mais il est difficile de se maintenir.

Je suis à la recherche d'un outil qui permettra de fixer l'indentation (comme html tidy, mais pour python) et de ne pas casser le code :)

295voto

Alex Martelli Points 330805

Utiliser l' reindent.py script que vous trouverez dans l' Tools/scripts/ répertoire de votre installation de Python:

Changement De Python (.py) de fichiers à utiliser 4-l'espace de retrait et pas dur onglet des personnages. Aussi découper des espaces et les onglets à partir des extrémités de lignes, et supprimer les lignes vides à la fin de les fichiers. Aussi s'assurer que la dernière ligne se termine avec un saut de ligne.

Jetez un oeil à ce script pour obtenir des instructions d'utilisation.

59voto

ephemient Points 87003

Si vous utilisez Vim, voir :h retab.

 *:ret* *:retab*
:[plage]ret[ab][!] [new_tabstop]
 Remplacer toutes les séquences de blanc-espace contenant un
 <Tab> les cordes de l'espace blanc à l'aide de la nouvelle
 tabstop valeur donnée. Si vous ne spécifiez pas une nouvelle
 taille de tabulation ou qu'il est nul, Vim utilise la valeur actuelle
 de 'tabstop'.
 La valeur actuelle de 'tabstop' est toujours utilisé pour
 calculer la largeur des onglets existants.
 Avec !, Vim remplace également les chaînes de normal
 des espaces avec des onglets, le cas échéant.
 Avec 'expandtab', Vim remplace tous les onglets avec la
 nombre approprié de places.
 Cette commande définit 'tabstop' la nouvelle valeur donnée,
 et si elle est effectuée sur l'ensemble du fichier, qui est par défaut,
 ne doit pas faire de changement visible.
 Attention: Cette commande modifie un caractère <Tab> 
 à l'intérieur de chaînes dans un programme C. Utilisez "\t" pour éviter
 ce (c'est une bonne habitude de toute façon).
 ":retab!" peut également modifier une séquence d'espaces par
 Le caractère <Tab>, ce qui peut gâcher un printf().
 {absent de Vi}
 Pas disponible lorsque |+ex_extra| fonctionnalité a été désactivée lors de la
 moment de la compilation.

Par exemple, si vous tapez simplement

:ret

tous vos onglets sera élargie dans les espaces.

Vous pouvez

:se et " raccourci pour :set expandtab

assurez-vous que toutes les nouvelles lignes à ne pas utiliser littérale onglets.


Si vous n'êtes pas à l'aide de Vim,

perl -je.bak -pe "s/\t/' 'x(8-pos()%8)/eg" file.py

va remplacer les tabulations par des espaces, en supposant que les taquets de tabulation toutes les 8 caractères, en file.py (avec l'original va file.py.bak, juste au cas où). Remplacer le 8s avec 4s si votre taquets de tabulation sont tous les 4 espaces à la place.

15voto

Ben Hughes Points 8238

À l'aide de vim, il ne devrait pas être plus compliqué que de frapper la touche Echap, puis en tapant..

:%s/\t/    /g

..sur le fichier que vous voulez modifier. Qui vous permet de convertir tous les onglets de 4 espaces. Si vous avez un espacement irrégulier ainsi, ce sera plus difficile.

9voto

Paul Hildebrandt Points 1455

Il est également PythonTidy (puisque vous avez dit que vous aimez HTMLTidy) Il peut être trouvé ici: http://pypi.python.org/pypi/PythonTidy/1.16 Il peut faire beaucoup plus que simplement nettoyer les onglets. Si vous aimez ce genre de chose qu'il vaut la peine de regarder.

4voto

Yansky Points 1134

Si vous êtes paresseux (comme moi), vous pouvez également télécharger une version d'essai de Wingware IDE Python, qui a une auto-correction d'outil pour foiré l'indentation. Il fonctionne assez bien. http://www.wingware.com/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X