TypeError: a byte object is needed, not 'str' - Pokemon go hack

I keep getting this error when I run the following code in python 3:

fname1 = "auth_cache_%s" % username fname=fname1.encode(encoding='utf_8') #fname=fname1.encode() if os.path.isfile(fname,) and cached: response = pickle.load(open(fname)) else: response = self.heartbeat() f = open(fname,"w") pickle.dump(response, f) 

Here is the error I get:

 File "C:\Users\Dorien Xia\Desktop\Pokemon-Go-Bot-Working-Hack-API-master\pgoapi\pgoapi.py", line 345, in login response = pickle.load(open(fname)) TypeError: a bytes-like object is required, not 'str' 

I tried converting fname1 to bytes through an encoding function, but it still does not fix the problem. Can someone tell me what happened?

+8
bots pokemon-go
source share
4 answers

You need to open the file in binary mode:

 file = open(fname, 'rb') response = pickle.load(file) file.close() 

And when writing:

 file = open(fname, 'wb') pickle.dump(response, file) file.close() 

Aside, you should use with to process open / close files:

When reading:

 with open(fname, 'rb') as file: response = pickle.load(file) 

And when writing:

 with open(fname, 'wb') as file: pickle.dump(response, file) 
+12
source share

In Python 3, you need to specifically call either "rb" or "wb".

 with open('C:\Users\Dorien Xia\Desktop\Pokemon-Go-Bot-Working-Hack-API-master\pgoapi\pgoapi.py', 'rb') as file: data = pickle.load(file) 
+4
source share

You need to change 'str' to 'bytes'. Try the following:

 class StrToBytes: def __init__(self, fileobj): self.fileobj = fileobj def read(self, size): return self.fileobj.read(size).encode() def readline(self, size=-1): return self.fileobj.readline(size).encode() with open(fname, 'r') as f: obj = pickle.load(StrToBytes(f)) 
+1
source share

I keep coming back to this link, so I am posting a real answer the next time I look for it:

PickleDB is messed up and needs to be fixed.

Line 201 pickledb.py

From:

 simplejson.dump(self.db, open(self.loco, 'wb')) 

in

 simplejson.dump(self.db, open(self.loco, 'wt')) 

The problem is resolved forever.

0
source share

All Articles