I'm busy with a Uni project where I need to read text files and ten populate a table with their information. It was working fine last week when I first coded it. Now however, when I try to run it, I get the TypeError: bool, it occurs in my for loop, when I read_ln from the text file, the code is :
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
from webbrowser import * at the top of your module imports the
webbrowser.open function (which opens a new browser window), shadowing the builtin
open function (that opens files) which you were intending to call in your later code.
webbrowser.open returns a Boolean value, rather than a file object, which is what the exception is about.
To fix this, change the import. Either use
import webbrowser and qualify the places you use the module (e.g.
webbrowser.get() or whatever you're using it for), or import just the specific names that you know you will need (e.g.
from webbrowser import get).
Importing with a wildcard is not generally a good idea unless the module you're doing it on is specifically designed for it. This issue shows exactly why.