Странная проблема, возникающая при использовании TextWrangler для редактирования скрипта Python 2.7, который тестирует многопоточность и модули Queue.

Я пишу скрипт на 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.

Может ли кто-нибудь предложить подход к отладке или исправление кода? Спасибо! Красный


person Red Spanner    schedule 04.09.2012    source источник


Ответы (2)


Как вы уже подозревали, это, скорее всего, ошибка отступа. Ваш текстовый редактор, вероятно, смешивает использование табуляции и пробелов. Замените все вкладки пробелами (или наоборот, хотя стандарт в питоне — 4 пробела), и вы увидите, что ошибка исчезла.

person Daniel Kinsman    schedule 04.09.2012
comment
Да, я снова ввел весь блок, и проблема, похоже, исчезла. Код выполняется неправильно, но теперь это логическая проблема, а не ошибка времени выполнения! :о) - person Red Spanner; 04.09.2012

Для тех, кто найдет этот вопрос позже, как и я, легко исправить настройки TextWrangler и полностью решить эту проблему; Перейдите в «Настройки» -> «Настройки редактора по умолчанию» -> «Автоматическое развертывание вкладок», затем установите вкладки на 4 пробела. Перезапустите TextWrangler, чтобы изменения вступили в силу. Для существующих документов, которые продолжают создавать проблемы, прочитайте это.

person frankV    schedule 07.12.2012
comment
Спасибо, FrankV -- я тоже этим воспользуюсь. - person Red Spanner; 23.01.2013