如何自动格式化某些Python代码以正确格式化?

Joh*_*lla 62 python formatting

我有一些现有的代码没有一致的格式 - 有时两个空格用于缩进,有时四个,依此类推.代码本身是正确的,经过充分测试,但格式很糟糕.

有一个在线的地方,我可以简单地粘贴一段Python代码,并为我自动缩进/格式化?或者,是否有X这样的东西,我可以做一些类似的事情X --input=*.py并让它用格式化的版本覆盖每个文件?

d22*_*197 70

autopep8

autopep8会自动格式化你的python脚本.不仅是代码缩进,还有其他编码间距样式.它使您的python脚本符合PEP8样式指南.

pip install autopep8
autopep8 your_script.py    # dry-run, only print
autopep8 -i your_script.py # replace content
Run Code Online (Sandbox Code Playgroud)

更新:

许多编辑器都有pep8插件,可以在保存文件后立即自动重新格式化代码.emacs中的py-autopep8

yapf

yapf是一个新的更好的python代码格式化程序.它试图获得最佳格式,而不仅仅是符合指南.用法与autopep8完全相同.

pip install yapf
yapf your_script.py    # dry-run, only print
yapf -i your_script.py # replace content
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,如格式化的配置,请阅读README.rstyapf github上


更新2:

黑色

黑色yapf好得多.它更智能,适合大多数复杂的格式化案例.

  • 我不同意黑色> yapf。黑色在很多情况下都过于僵化。很多东西无法配置。我知道这就是《black》的作者想要实现的目标,但如果有人试图在我的项目中做出决定,我无法忍受。特别是当在**真正的**生产环境(例如在公司)中工作时,当编程不仅仅是某种科学游戏时,您需要与许多人和/或部门就一种风格达成一致。**这**就是黑色**以其“不妥协”的blabla而**严重失败的地方。 (4认同)

unu*_*tbu 46

编辑:现在,我建议使用autopep8,因为它不仅可以纠正缩进问题,而且(由您自行决定)使代码符合许多其他PEP8指南.


使用reindent.py.它应该带有Python的标准发行版,但在Ubuntu上你需要安装它python2.6-examples.

您也可以在网上找到它.

此脚本尝试将任何python脚本转换为符合4空间标准.

  • 完善.谢谢!我用'找到.-type f -name"*.py"| xargs python reindent.py --nobackup`. (3认同)

nbe*_*dou 12

使用黑色.它故意只有一个选项(行长),以确保许多项目的一致性.它强制执行PEP8.

  • 您也可以使用repl.it在线使用`black`(请求OP):https://repl.it/repls/BriefBetterSystemcall (3认同)

mrk*_*mrk 5

用 PyCharm 找到了离线解决方案

在 PyCharm 中:

1. 选择所有代码:

[ctrl]+[A]
Run Code Online (Sandbox Code Playgroud)

2. 格式化所有代码

[ctrl]+[alt]+[L]
Run Code Online (Sandbox Code Playgroud)