【问题标题】:Which is the closest Python equivalent to Perl::Tidy?与 Perl::Tidy 最接近的 Python 是哪个?
【发布时间】:2011-04-03 19:26:00
【问题描述】:

来自 Perl,我习惯于按 C-c t 来根据预定义的 Perl::Tidy 规则重新格式化我的代码。现在,使用 Python,我惊讶地发现,没有什么能比得上Perl::Tidy 的强大功能。 PythonTidy 1.20 看起来几乎是合适的,但在第一个未对齐的行(“意外缩进”)时会被吐槽。

特别是,我正在寻找以下内容:

  • 尽量使用PEP-8(以下几项本质上是这个的派生词)
  • 将缩进制表符转换为空格
  • 删除尾随空格
  • 尽可能根据预定义的行长分解代码(Eclipse 风格的字符串拆分和拆分方法链)
  • 规范化
  • 周围的空白
  • (附加功能,可选)重新格式化代码,包括缩进。

现在,我正在检查别人的代码并更正 pep8pyflakes 告诉我的所有内容,主要是“删除尾随空格”和“插入额外的空白行”。虽然我知道在 Python 中重新缩进并不是微不足道的(尽管它应该可以通过浏览代码并记住缩进),但其他功能似乎很容易,我不敢相信以前没有人实现过它。

有什么建议吗?

更新:我将深入了解 PythonTidy,因为它似乎朝着正确的方向发展。也许我可以找出它为什么会向我吐口水。

【问题讨论】:

    标签: python emacs code-formatting perl-tidy


    【解决方案1】:

    我为此使用了autopep8,发现它很方便。

    【讨论】:

      【解决方案2】:

      您是否尝试过围绕 pythontidy 创建一个包装器? sublime editor here 有一个。

      另外,pythontidy 是否为您正确地分解了长行?当我有一个以元组结尾的长行时,它会为元组中的每个条目创建一个新行,而不是按照 PEP-8 的建议在括号、括号和大括号内使用 Python 隐含的行继续。

      【讨论】:

      • PythonTidy 作者的官方封装存在here。我最初在 PythonTidy 上遇到了一些问题,并已邮寄给作者,作者及时发布了PythonTidy 1.21,它与 PyPI 没有链接。我仍然不完全满意,但我没有时间记录每个问题和/或适当地修补它。
      【解决方案3】:

      untabify.pyTools/scripts/untabify.py 来自 Python 源代码分发的根目录)应该修复选项卡,这可能是阻止 Python Tidy 完成其余工作的原因。

      【讨论】:

      • 是的,Emacs 也通过它的untabify 命令做到了这一点。但这只是一个问题,在初始转换后不会出现问题。
      【解决方案4】:

      scripts目录下有一个reindent.py脚本随python一起分发。

      【讨论】:

      • 它可以从 PyPi 获得并且不能正常工作——错误缩进的文件没有得到纠正。显然,只有有效的缩进会改变,例如从 2 个空格到 4 个空格。
      • 一个不正确的缩进文件可能是模棱两可的,脚本怎么知道你的真正意思?
      • @Nick:第一行代码不应该有歧义,尤其是from foo import baz
      猜你喜欢
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      相关资源
      最近更新 更多