2016-09-12 6 views
-1

私はテキストファイルを読み込む必要のあるUniプロジェクトに忙しく、10人は情報をテーブルに取り込みます。私が最初にそれをコード化したとき、先週うまくいきました。さてしかし、私はそれを実行しようとすると、私はTypeError例外を取得します:BOOL、それはループのために、私の中で発生し、私は、テキストファイルからread_lnとき、コードは次のとおりです。の上部にTypeError:テキストファイルを読み込んだときに 'bool'オブジェクトが反復可能ではありません

from sqlite3 import * 
from webbrowser import * 

    #retrieve a text file 
    while inc != len(categories): 
     file_open = open(categories[inc]+'.txt','U') 
    #assign the category 
     category = categories[inc] 
    #run the loop to populate the table popularity 
     for each_ln in file_open: 
    #assign the variables. 
      tab_index = each_ln.find('\t') 
      PersonNumber = each_ln[0:tab_index] 
      value = each_ln[tab_index + 1:len(each_ln)] 
    #populate the database.   
      TH2_db.execute("INSERT INTO popularity VALUES (?,?,?)" \ 
          , (PersonNumber, category, value)) 
    #increment to move onto the next textfile   
     inc = inc + 1 
+0

問題の本質にコードを制限してください。 – Evert

+1

あなたの質問に完全なトレースバックを含めてください。 (完全な)エラー情報は分析に役立ちます。 – Evert

+0

コードを制限するときは、コードが実行可能であることを確認してください。 [最小で完全で検証可能な例の作成方法](http://stackoverflow.com/help/mcve)を参照してください。 – Evert

答えて

0

あなたの文from webbrowser import *あなたのモジュールはwebbrowser.open関数(新しいブラウザウィンドウを開きます)をインポートし、後のコードで呼び出すことになっている組み込みのopen関数(ファイルを開きます)をシャドーイングします。 webbrowser.openは、ファイルオブジェクトではなくブール値を返します。これは例外に関するものです。

これを修正するには、インポートを変更します。 import webbrowserを使用して、モジュールを使用する場所(例:webbrowser.get()など)を指定するか、必要とする特定の名前(例:from webbrowser import get)だけをインポートします。

ワイルドカードを使用してインポートすることは、一般的にはそれを実行しているモジュールが特別に設計されていない限り、良い考えではありません。この問題は、その理由を正確に示しています。

+0

はい、ありがとう、私はちょうど問題をかもしれない、 HTMLファイルを開いてそれに書き込んだり、ウェブブラウザで開いたりして、インポートします。 – Act

関連する問題