1

私は Python 2.7 でスクリプトを書いており、マルチスレッドと Queue モジュールの使用を調査しています。スクリプトは 2 つの関数を定義するだけで、そのうちの 1 つはスレッド インスタンスで開始されてキューを満たし、2 番目の関数は 2 番目のスレッド インスタンスで開始されてキューから何かを取得します。ただし、実行前であっても関数定義の 1 つをチョークするため、このスクリプトを実行することさえできません。問題のあるコード スニペットは次のとおりです。

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 に答える