4

我目前在 Windows 7 中使用 Komodo Edit,但是,我在使用 TextWrangler 的 Mac 上遇到了这个问题。无论出于何种原因,我都会遇到某种空白错误,这在我用 Python 编写时是个大问题。例如,所有内容似乎都已正确标记,但 Komodo 目前给我一个“不明确的空白”错误

//How it appears in my editor
def SaveList(self, directory):
    templist = []
    templistbox2 = []
    for n,i in enumerate(self.listbox2.get(0,END)): 
       templistbox2.insert(n, re.sub(r'^[0-9]*[.]',"",str(i)))
    for filename in sorted(os.listdir(directory)):
        self.templist.insert(i, filename)
        print filename #whitespace error here

考虑到我在 Windows 和 Mac 上使用两个不同的编辑器都经历过这种情况,我想知道是否有一些我不知道的设置,或者我做错了什么。

4

3 回答 3

7

当我将您的代码复制到文件 test.py 并运行时

cat -A test.py

我懂了

//How it appears in my editor$
def SaveList(self, directory):$
    templist = []$
    templistbox2 = []$
    for n,i in enumerate(self.listbox2.get(0,END)): $
       templistbox2.insert(n, re.sub(r'^[0-9]*[.]',"",str(i)))$
    for filename in sorted(os.listdir(directory)):$
        self.templist.insert(i, filename)$
^I    print filename #whitespace error here$

这表示最后一行有一个制表符(由 表示^I)后跟四个空格。

我不确定 Windows 上的等效工具是什么,但 Mac 应该有这个cat -A命令。它将向您显示制表符与空格的位置。


有一个名为reindent.py的程序会为您将制表符转换为空格:

reindent.py test.py

在 Unix 上还有一个unexpand命令可以将空格转换为制表符。


大多数 Python 程序员使用空格而不是制表符进行缩进。您在 Web 上找到的大多数 Python 代码将使用空格而不是制表符。

您的编辑器可能正在添加选项卡,但如果您从网上获取了一段代码,您的文件现在可能同时包含选项卡和空格。

顺其自然并采用空格作为缩进约定是最容易的,因此您不必重新格式化其他人的代码。

顺便说一句,采用空格作为缩进的约定并不意味着SPACE每个缩进级别必须按 4 次。您的编辑器应该有一个配置选项,可以按TAB插入 4 个空格。

于 2013-01-30T13:09:27.670 回答
2

这是 Python 中的常见问题。以下建议可能对您有所帮助:

1) 切勿混用空格和制表符。对于新项目,使用空格而不是制表符 请参阅PEP8我的建议是使用 4 个空格。

2) 更改 Komodo 中标签长度的默认值,以便更轻松地检测混合。按Edit > Preferences菜单,然后在Editor settings

  • 取消选中,Prefer Tab characters over spaces
  • 使用 4Number of spaces for indent
  • 使用不同的值(例如 8)width of each tab character

3) 中的reindent.py脚本C:\Python2x\Tools\Scripts\可以帮助您正确地重新缩进文件

-d (--dryrun)   Dry run.   Analyze, but don't make any changes to, files.
-r (--recurse)  Recurse.   Search for all .py files in subdirectories too.
-n (--nobackup) No backup. Does not make a ".bak" file before reindenting.
-v (--verbose)  Verbose.   Print informative msgs; else no output.
-h (--help)     Help.      Print this usage information and exit.

Change Python (.py) files to use 4-space indents and no hard tab characters.
Also trim excess spaces and tabs from ends of lines, and remove empty lines
at the end of files.  Also ensure the last line ends with a newline.

我希望它有帮助

于 2013-01-30T13:37:54.900 回答
1

由于没有其他人提到它,因此有一种简单的方法可以使 Komodo 本身内部的空白可见。您不需要使用任何外部工具。

只需从菜单中选择查看/查看空白,或在 Windows 上使用键盘快捷键 Ctrl+Shift+8。重复以将其关闭。

当您在“查看”菜单上时,请查看那里的一些其他有用功能。我发现缩进指南特别有用,并且一直打开它们。查看 EOL 标记有时也很有用。

于 2013-04-13T08:30:01.217 回答