2010-08-25 24 views
4

來自Perl我已經習慣了按照預先定義的Perl::Tidy規則重新格式化我的代碼,我打了C-c t。現在,對於Python來說,我很驚訝地發現沒有任何東西可以與Perl::Tidy的功能相似。 PythonTidy 1.20看起來幾乎是合適的,但是在第一個錯誤對齊的行(「意外縮進」)中發生了barfed。哪一個等同於Perl :: Tidy的Python最接近?

特別,我在尋找以下:

  • 看跌PEP-8投入使用盡可能(以下項目基本上這一個推導)
  • 轉換縮進選項卡空間
  • 刪除尾部空格
  • 分手根據預定線長度的,只要它進入代碼(Eclipse的風格串分裂和分裂方法鏈)
  • 正常化whitespa約
  • (獎金功能,可選)重新格式化代碼,包括縮進。

現在,我要去throught別人的代碼與正確的一切pep8pyflakes告訴我,其中大部分是「刪除尾隨空間」和「插入額外的空白行」。雖然我知道Python中的重新縮進並不是微不足道的(儘管只需仔細閱讀代碼並記住縮進即可),但其他功能看起來很容易,我不能相信以前沒有人實現過這一點。

有什麼建議嗎?

更新:我將深入研究PythonTidy,因爲它似乎進入了正確的方向。也許我可以找出爲什麼它會在我身邊。

回答

1

scripts目錄中有一個reindent.py腳本隨python一起發佈。

+0

它可從PyPi獲得並且無法正常工作 - 錯誤縮進的文件未被更正。顯然,只有有效的縮進被改變,例如從2個空格到4. – 2010-08-25 15:48:23

+0

不正確縮進的文件可能不明確,腳本如何知道你的意思? – 2010-08-25 15:58:44

+0

@Nick:第一行代碼不應該模棱兩可,特別是當它從foo import baz'。 – 2010-08-25 16:01:02

0

untabify.pyTools/scripts/untabify.py來自Python源代碼發佈的根目錄)應該修復這些選項卡,這可能是阻止Python Tidy完成其餘工作的原因。

+0

是的,Emacs也使用它的'untabify'命令來做到這一點。但這只是一個問題,在初始轉換後這是一個非問題。 – 2010-08-25 15:45:32

0

你有沒有嘗試過創建pythontidy的包裝?有一個用於sublime editor here

此外,pythontidy是否會爲您正確分解長長的行?當我有一個以元組結尾的長行時,它會爲元組中的每個條目創建一個新行,而不是像PEP-8所建議的那樣,在括號,括號和大括號中使用Python的隱含行連續。

+1

由PythonTidy的作者存在的官方包裝[here](http:// lacusveris。COM/PythonTidy/PythonTidyWrapper.python)。我最初遇到了一些與PythonTidy有關的問題,並且郵寄了作者,他發佈了一個[PythonTidy 1.21](http://lacusveris.com/PythonTidy/PythonTidy-1.21.python),它沒有從PyPI鏈接。我仍然不完全滿意,但我沒有時間來注意每個問題和/或適當地修補它。 – 2011-02-27 18:07:26

0

我已經使用autopep8爲此目的,並發現它很方便。

相關問題