Issue
I am working on a tkinter projects which save encrypted passwords. I am writing key to this path: C:\Users\<usrname>\.PassManager\PassManager.key
.
It was working fine, all of sudden I do not what happened I am getting this error. While writing I have mentioned to write bytes to file. It doesn't seems working.
Understanding:
Error: 'bool' object
self.key_path()
is not a boolean variable?
What is the cause of this problem?
Error:
<class 'bytes'>
b'Oy21Nnu_A0f7xFuS-7pnFegt5Dj0ks6n4_ksOPzlYck=' #<-------Writing this key
Traceback (most recent call last):
File "c:\Users\rohit\Desktop\Password Manager\app.py", line 559, in <module>
app = App()
^^^^^
File "c:\Users\rohit\Desktop\Password Manager\app.py", line 40, in __init__
self.b64key = self.key()
^^^^^^^^^^
File "c:\Users\rohit\Desktop\Password Manager\app.py", line 522, in key
with open(self.key_path, "wb") as file:
TypeError: 'bool' object does not support the context manager protocol
Code:
class App(CTk):
def __init__(self):
super().__init__()
self.count = True
self.db_path = self.get_db_path()
self.key_path = self.get_key_path()
# Writing up db and key files
self.dirFile_setup()
# Secret key
self.b64key = self.key()
# --------------- Code -------------------------
def key():
if path.exists(self.key_path) and stat(self.key_path).st_size == 0:
key_ = Fernet.generate_key()
print(type(key_))
with open(self.key_path, "wb") as file:
file.write(key_)
file.close()
return key_
else:# Opening exist file
with open(self.key_path, "r") as file:
return file.readlines()[0]
Solution
Somewhere in your code you've overridden/shadowed the built-in open function with some callable that returns either True or False
Here are some examples that would lead to the exception you're observing:
# 1st possibility
def open():
return True
# 2nd possibility
open = lambda: False
# 3rd possibility
def banana():
return True
open = banana
# Then...
with open() as _:
...
...leads to...
TypeError: 'bool' object does not support the context manager protocol
Answered By - CtrlZ
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.