Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I autoformat some Python code to be correctly formatted?

I have some existing code which isn't formatted consistently -- sometimes two spaces are used for indent, sometimes four, and so on. The code itself is correct and well-tested, but the formatting is awful.

Is there a place online where I can simply paste a snippet of Python code and have it be indented/formatted automatically for me? Alternatively, is there an X such that I can do something like X --input=*.py and have it overwrite each file with a formatted version?

like image 486
John Feminella Avatar asked Apr 12 '10 20:04

John Feminella


People also ask

How do I autoformat code in Python?

Either open your file in the editor and press Ctrl+Alt+Shift+L or in the Project tool window, right-click the file and select Reformat Code.

How do I beautify Python code in Visual Studio?

Select Edit > Advanced > Format Selection.


3 Answers

autopep8

autopep8 would auto-format your python script. not only the code indentation, but also other coding spacing styles. It makes your python script to conform PEP8 Style Guide.

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

Update:

Many editors have pep8 plugins that automatically reformat your code right after you save the file. py-autopep8 in emacs

yapf

yapf is a new and better python code formatter. which tries to get the best formatting, not just to conform the guidelines. The usage is quite the same as autopep8.

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

For more information, like formatting configurations, please read the README.rst on yapf github


Update 2:

Black

Black is much better than yapf. It's smarter and fits most complex formatting cases.

like image 115
d2207197 Avatar answered Oct 21 '22 06:10

d2207197


Edit: Nowadays, I would recommend autopep8, since it not only corrects indentation problems but also (at your discretion) makes code conform to many other PEP8 guidelines.


Use reindent.py. It should come with the standard distribution of Python, though on Ubuntu you need to install the python2.6-examples package.

You can also find it on the web.

This script attempts to convert any python script to conform with the 4-space standard.

like image 22
unutbu Avatar answered Oct 21 '22 05:10

unutbu


Use black. It has deliberately only one option (line length) to ensure consistency across many projects. It enforces PEP8.

like image 29
nbedou Avatar answered Oct 21 '22 05:10

nbedou