Mam trochę kodu Python, który ma niespójne wcięcia. Istnieje wiele kombinacji zakładek i spacji, aby pogorszyć sprawę, a nawet wcięcia w przestrzeni nie są zachowywane.
Kod działa zgodnie z oczekiwaniami, ale jest trudny do utrzymania.
Jak mogę naprawić wcięcie (jak HTML Tidy , ale dla Pythona) bez łamania kodu?
autopep8
zapewnia wcięcie i wiele więcej: stackoverflow.com/questions/14328406/...Odpowiedzi:
Użyj
reindent.py
skryptu, który znajdziesz wTools/scripts/
katalogu instalacji Pythona:Przejrzyj ten skrypt, aby uzyskać szczegółowe instrukcje użytkowania.
źródło
python-examples
pakiet.python-examples
zainstalowaniu znajdziesz się w nim ponownie/usr/share/doc/pythonX.X/examples/Tools/scripts/reindent.py
.Jeśli używasz Vima , zobacz
:h retab
.Na przykład po prostu piszesz
wszystkie twoje zakładki zostaną rozwinięte w spacje.
Może chcesz
aby upewnić się, że żadne nowe wiersze nie będą używać literalnych tabulatorów.
Jeśli nie używasz Vima,
zamieni tabulatory spacjami, zakładając, że tabulatory będą zatrzymywane co 8 znaków
file.py
(w oryginale nafile.py.bak
wszelki wypadek). Zamień 8 na 4, jeśli tabulacja ma zamiast tego co 4 spacje.źródło
Sięgnę po autopep8, aby to zrobić:
Uwaga: E101 i E121 to wcięcia pep8 (myślę, że możesz po prostu przejść,
--select=E1
aby naprawić wszystkie problemy związane z wcięciami - te zaczynające się od E1).Możesz zastosować to do całego projektu za pomocą flagi rekurencyjnej:
Zobacz także Narzędzie do konwersji kodu w języku Python, aby był zgodny z PEP8 .
źródło
autopep8
kończy się niepowodzeniem, jeśli składnia jest niepoprawna. możesz to potwierdzić za pomocąpython -tt <file.py>
autopep8 -i script.py
Użyj autopep8
autopep8
automagicznie formatuje kod Pythona, aby był zgodny zPEP 8
nullstyle
przewodnikiem. Korzysta zpep8
narzędzia, aby określić, które częścinullcode
formatowania wymagają sformatowania.autopep8
jest w stanie naprawić większośćnullformatting
problemów, które mogą zostać zgłoszone przezpep8
.źródło
Używając Vima, nie powinno to być bardziej angażujące niż bicie Esc, a następnie pisanie ...
... na pliku, który chcesz zmienić. Spowoduje to konwersję wszystkich tabulatorów na cztery spacje. Jeśli masz również niespójne odstępy, będzie to trudniejsze.
źródło
Istnieje również PythonTidy (ponieważ powiedziałeś, że lubisz HTML Tidy).
Może jednak zrobić znacznie więcej niż tylko czyszczenie zakładek. Jeśli lubisz tego typu rzeczy, warto to sprawdzić.
źródło
W większości systemów podobnych do UNIX możesz także uruchomić:
z wiersza poleceń, zmieniając liczbę, jeśli chcesz zastąpić tabulatory spacjami innymi niż 4. Możesz łatwo napisać skrypt powłoki, aby zrobić to jednocześnie z wieloma plikami, zachowując oryginalne nazwy plików.
źródło
Jeśli jesteś leniwy (tak jak ja), możesz również pobrać wersję próbną Wingware Python IDE, która ma narzędzie do automatycznej naprawy wcięć. Działa całkiem dobrze. http://www.wingware.com/
źródło
Ponowny skrypt nie działał dla mnie z powodu jakiegoś brakującego modułu. W każdym razie znalazłem to
sed
polecenie, które wykonuje pracę idealną dla mnie:źródło
Wypróbuj Emacsa. Ma dobre wsparcie dla wcięć potrzebnych w Pythonie. Proszę sprawdzić ten link http://python.about.com/b/2007/09/24/emacs-tips-for-python-programmers.htm
źródło
Spróbuj IDLE i użyj Alt+, Xaby znaleźć wcięcie.
źródło
Mam proste rozwiązanie tego problemu. Możesz najpierw wpisać „: retab”, a następnie „: retab!”, A następnie wszystko będzie dobrze
źródło
:retab
” w jakim kontekście. W Vimie ?W przypadku próby znalezienia narzędzia do wykonania
2-space indented
skryptu Pythona dotab indented
wersji wystarczy użyć tego narzędzia online:https://www.tutorialspoint.com/online_python_formatter.htm
źródło