일부 Python 코드의 형식을 올바르게 지정하려면 어떻게해야합니까?


81

일관되게 서식이 지정되지 않은 기존 코드가 있습니다. 때로는 들여 쓰기에 두 개의 공백이 사용되며, 때로는 네 개의 공백이 사용됩니다. 코드 자체는 정확하고 잘 테스트되었지만 형식이 끔찍합니다.

Python 코드 스 니펫을 붙여 넣기 만하면 자동으로 들여 쓰기 / 형식이 지정되도록 할 수있는 온라인 공간이 있습니까? 또는 X내가 같은 작업을 수행하고 X --input=*.py각 파일을 형식화 된 버전으로 덮어 쓰도록 할 수있는 방법이 있습니까?



1
vim에서 : 플러그인 python-modeautopep8을:PyLintAuto 사용 하는 명령 을 제공합니다
Hotschke 2013-08-21

답변:


54

편집 : 요즘은 들여 쓰기 문제를 해결할뿐만 아니라 (귀하의 재량에 따라) 코드가 다른 많은 PEP8 지침을 따르기 때문에 autopep8 을 권장 합니다.


사용 reindent.py. Python의 표준 배포판과 함께 제공되어야하지만 Ubuntu에서는 python2.6-examples패키지 를 설치해야 합니다.

에서도 찾을 수 있습니다 .

이 스크립트는 4 스페이스 표준을 준수하도록 모든 Python 스크립트를 변환하려고합니다.


3
완전한. 감사! 나는 find . -type f -name "*.py" | xargs python reindent.py --nobackup.
John Feminella

1
Fedora에서 python-tools패키지 를 설치해야합니다reindent.py
JohnTESlade

Mavericks에서 어디에 있습니까?
avi

@avi : 일반적으로 여기 에서 답을 찾을 수 있지만 Mavericks가 너무 오래 되었기 때문에 python2.7-examples.
unutbu 2014 년

1
당신은 black요즘 추천해야합니다
Boris

85

autopep8

autopep8 은 파이썬 스크립트를 자동으로 포맷합니다. 코드 들여 쓰기뿐만 아니라 다른 코딩 간격 스타일도 있습니다. PEP8 스타일 가이드를 따르도록 파이썬 스크립트를 만듭니다.

pip install autopep8
autopep8 your_script.py    # dry-run, only print
autopep8 -i your_script.py # replace content

최신 정보:

많은 편집기에는 파일을 저장 한 직후 코드를 자동으로 다시 포맷하는 pep8 플러그인이 있습니다. emacs의 py-autopep8

야프

yapf 는 새롭고 더 나은 파이썬 코드 포맷터입니다. 가이드 라인을 따르기위한 것이 아니라 최상의 형식을 얻으려고합니다. 사용법은 autopep8과 동일합니다.

pip install yapf
yapf your_script.py    # dry-run, only print
yapf -i your_script.py # replace content

구성 형식 지정과 같은 자세한 내용 README.rstyapf github를 참조하세요.


업데이트 2 :

검정

검정yapf 보다 훨씬 낫습니다 . 더 똑똑하고 대부분의 복잡한 서식 지정 사례에 적합합니다.


[Webserver-~ / scripts] $ autopep8 -i 2c.py [Webserver-~ / scripts] $ python 2c.py 파일 "2c.py", requests.adapters에서 9 행 import HTTPAdapter ^ IndentationError : 예기치 않은 들여 쓰기 나를 위해 작동하지 않음 ...
pkm

Python 코드 블록은 들여 쓰기로 정의되므로 들여 쓰기를 수정하는 것은 autopep8이 아닙니다. 도구는 들여 쓰기 수준을 변경할 수 없으며 변경해서는 안됩니다.
d2207197

20

검정색을 사용하십시오 . 여러 프로젝트에서 일관성을 보장하기 위해 의도적으로 하나의 옵션 (라인 길이) 만 있습니다. PEP8을 시행합니다.


5
repl.it을 사용하여 black온라인 으로 사용할 수도 있습니다 (OP 요청에 따라) : repl.it/repls/BriefBetterSystemcall
damio

5

PyCharm으로 오프라인 솔루션을 찾았습니다.

PyCharm에서 다음을 수행하십시오.

1. 모든 코드 선택 :

[ctrl]+[A]

2. 모든 코드 서식 지정

[ctrl]+[alt]+[L]

버튼은 무엇입니까 [strg]?
Stevoisiak

2

일부 편집기에는이를 수행하는 자동 서식 기능이 있습니다. Eclipse가 한 가지 예입니다 (단, Python 플러그인을 설치해야 할 수도 있음).

그러한 기능에 사용하는 편집기를 확인 했습니까?


이클립스 자동 서식에 +1. 파일을 열고 eclipse로 다시 저장하십시오. 들여 쓰기를 수정하고, 괄호와 인수 사이의 잘못된 공백을 삭제하고, 목록과 인수에서 쉼표 뒤에 공백을 추가하고, "="기호 주위에 올바른 간격을 추가하고, 기타 모든 PEP 8 장점을 제공합니다.

1
아니에요. Eclipse 형식화는 PyDev가있는 그대로 설치된 경우에도 Python 스크립트에서 작동하지 않습니다.
luis.espinal

1
누가 내 말을 부정하고, 내가 틀렸다는 것을 증명하거나, 다시 나를 부정한다.
luis.espinal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.