使用TextWrangler编辑测试多线程和队列模块的Python 2.7脚本时出现了奇怪的问题



我正在Python 2.7中编写一个脚本,探索多线程和队列模块的使用。该脚本只定义了两个函数,其中一个函数将在线程实例中启动以填充队列,另一个函数则将在第二个线程实例中开始以从队列中提取一些内容。然而,我甚至无法让这个脚本执行,因为它甚至在执行之前就阻塞了其中一个函数定义。有问题的代码片段是:

def listenThread(counter):
    while queue.empty() != True:
        try:
            outcome = queue.get()
            print outcome
            counter -=1
            print counter 
        except: 
            return 'queue.get() command loop failing.'

我得到的错误信息是:

$ python threading-and-queue-test.py
  File "threading-and-queue-test.py", line 34
    except: 
           ^
IndentationError: unindent does not match any outer indentation level
$

我已经搜索了SO并检查了文档中try-except构造的正确形式,看起来还可以。我有早期版本的代码(没有try-except)在工作,所以我对文本编辑器TextWrangler v4.0.1产生了怀疑。

有人能建议调试方法或代码更正吗?谢谢红色

正如您已经怀疑的那样,这很可能是一个缩进错误。您的文本编辑器可能混合使用了制表符和空格。用空格替换所有选项卡(反之亦然,尽管python中的标准是4个空格),您应该会看到错误消失。

对于那些后来像我一样发现这个问题的人来说,修复TextWrangler的设置并完全停止这个问题很容易;转到"首选项"->"编辑器默认值"->"自动展开选项卡",然后将选项卡设置为4个空格。重新启动TextWrangler以使更改生效。对于继续给您带来问题的现有文档,请阅读本文。

最新更新