Python中最接近Perl::Tidy的工具是什么?

4 投票
4 回答
1722 浏览
提问于 2025-04-16 03:17

我之前用Perl的时候,习惯按 C-c t 来按照预设的 Perl::Tidy 规则来格式化我的代码。现在用Python,我惊讶地发现没有任何东西能像 Perl::Tidy 那样强大。PythonTidy 1.20 看起来还不错,但在遇到第一行缩进不对的时候就崩溃了(“意外的缩进”)。

我特别想要以下功能:

  • 尽可能使用PEP-8(以下的要求基本上都是基于这个标准)
  • 把缩进的制表符转换为空格
  • 去掉行尾的空格
  • 根据预设的行长度来拆分代码(像Eclipse那样拆分字符串和方法链)
  • 规范空白字符的使用
  • (附加功能,可选)重新格式化代码,包括缩进。

现在,我正在检查别人的代码,并根据 pep8pyflakes 的提示来修正,主要是“去掉行尾空格”和“插入额外的空行”。虽然我知道在Python中重新缩进并不简单(尽管通过查看代码并记住缩进应该是可以做到的),但其他功能看起来都很简单,我真不敢相信之前没有人实现过这些。

有什么推荐的吗?

更新:我打算更深入地研究一下PythonTidy,因为它似乎朝着正确的方向发展。也许我能找出它崩溃的原因。

4 个回答

0

你有没有试过给pythontidy做一个包装呢?这里有一个适用于Sublime编辑器的版本。

另外,pythontidy能正确处理长行吗?我发现当我有一行很长的代码以元组结尾时,它会为元组中的每个元素都创建一个新行,而不是像PEP-8建议的那样,在括号、方括号和大括号内使用Python的隐式换行。

0

untabify.py(这个文件在Python源代码的根目录下的Tools/scripts/untabify.py)可以用来修复代码中的制表符问题,这可能是导致Python Tidy无法继续工作的原因。

1

在Python的scripts目录里,有一个叫做reindent.py的脚本。

撰写回答