1

我正在用 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 产生怀疑。

任何人都可以建议调试方法或代码更正吗?谢谢!红色的

4

2 回答 2

1

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

于 2012-09-04T00:49:18.007 回答
1

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

于 2012-12-07T21:28:32.787 回答