[python] 파이썬 들여 쓰기를 수정하는 방법

들여 쓰기가 일치하지 않는 Python 코드가 있습니다. 문제를 더욱 악화시키기 위해 탭과 공백이 많이 혼합되어 있으며 공간 들여 쓰기도 보존되지 않습니다.

코드가 예상대로 작동하지만 유지 관리가 어렵습니다.

어떻게 들여 쓰기 수정 (같은 수 있습니다 HTML 단정을 하지만, 파이썬) 코드를 한방울 흘리지 않고?



답변

Python 설치 디렉토리에 있는 reindent.py스크립트를 사용하십시오 Tools/scripts/.

4 칸 들여 쓰기를 사용하고 하드 탭 문자를 사용하지 않도록 Python (.py) 파일을 변경하십시오. 또한 줄 끝에서 여분의 공백과 탭을 잘라 내고 파일 끝에서 빈 줄을 제거하십시오. 또한 마지막 줄은 줄 바꿈으로 끝나야합니다.

자세한 사용법 지침은 해당 스크립트를 살펴보십시오.


답변

Vim을 사용하는 경우를 참조하십시오 :h retab.

                                                        * : ret * * : retab *
: [범위] ret [ab] [!] [new_tabstop]
                        공백을 포함하는 모든 일련의 공백을 바꿉니다.
                        새로운 공백 문자를 사용한 <Tab>
                        주어진 tabstop 값. 새 것을 지정하지 않으면
                        tabstop 크기 또는 0, Vim은 현재 값을 사용합니다
                        '탭 스톱'.
                        'tabstop'의 현재 값은 항상
                        기존 탭의 너비를 계산하십시오.
                        !를 사용하면 Vim은 일반 문자열 만 대체합니다.
                        적절한 곳에 탭이있는 공간.
                        '확장 탭'을 켜면 Vim은 모든 탭을
                        적절한 수의 공간.
                        이 명령은 'tabstop'을 새로운 값으로 설정합니다.
                        전체 파일에서 수행되는 경우 (기본값)
                        눈에 띄는 변경을하지 않아야합니다.
                        주의 :이 명령은 모든 <Tab> 문자를 수정합니다
                        C 프로그램에서 문자열 내부. "\ t"를 사용하여 피하십시오
                        이것은 (어쨌든 좋은 습관입니다).
                        ": retab!" 또한 일련의 공백을 다음과 같이 변경할 수 있습니다.
                        printf ()를 망칠 수있는 <Tab> 문자
                        {가 아닌 Vi}
                        | + ex_extra | 에 기능이 비활성화되었습니다
                        컴파일 시간.

예를 들어

: ret

모든 탭이 공백으로 확장됩니다.

당신은 할 수 있습니다

: se et ": : set expandtab의 약자

새 줄에서 리터럴 탭을 사용하지 않도록합니다.


Vim을 사용하지 않는 경우

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

는 8 문자마다 탭이 중지된다고 가정 할 때 탭이 공백으로 바뀝니다 file.py(원본 file.py.bak은 경우에 따라). 탭 스탑이 4 칸 간격 인 경우 8을 4로 바꿉니다.


답변

autopep8 이이 작업 을 수행하도록 도달 합니다.

$ # see what changes it would make
$ autopep8 path/to/file.py --select=E101,E121 --diff

$ # make these changes
$ autopep8 path/to/file.py --select=E101,E121 --in-place

참고 : E101 및 E121 은 pep8 들여 쓰기입니다 ( --select=E1E1로 시작하는 모든 들여 쓰기 관련 문제를 해결하기 위해 전달할 수 있다고 생각합니다 ).

재귀 플래그를 사용하여 전체 프로젝트에이를 적용 할 수 있습니다.

$ autopep8 package_dir --recursive --select=E101,E121 --in-place

Python 코드를 PEP8 호환으로 변환하는 도구 도 참조하십시오 .


답변

autopep8 -i script.py

autopep8 사용

autopep8 PEP 8
nullstyle
가이드 에 맞게 Python 코드를 자동으로 형식화합니다 . pep8유틸리티를 사용하여 nullcode포맷해야 할 부분을 ​​결정합니다
. autopep8에서 nullformatting보고 할 수있는 대부분의
문제를 해결할 수 있습니다 pep8.

pip install autopep8
autopep8 script.py    # print only
autopep8 -i script.py # write file


답변

Vim을 사용하면을 Esc누른 다음 입력 하는 것보다 더 복잡하지 않아야합니다 .

:%s/\t/    /g

… 변경하려는 파일에서. 모든 탭을 4 개의 공백으로 변환합니다. 간격이 일치하지 않으면 더 어려워집니다.


답변

PythonTidy있습니다 (HTML Tidy를 좋아한다고 말했기 때문에).

탭 정리보다 더 많은 것을 할 수 있습니다. 그런 종류의 것을 좋아한다면 살펴볼 가치가 있습니다.


답변

대부분의 UNIX 계열 시스템에서는 다음을 실행할 수도 있습니다.

expand -t4 oldfilename.py > newfilename.py

탭을 4 이외의 다른 공백으로 바꾸려면 명령 줄에서 숫자를 변경하십시오. 원래 파일 이름을 유지하면서 한 번에 많은 파일로이를 수행하는 쉘 스크립트를 쉽게 작성할 수 있습니다.