2016-08-25 10 views
6

मैं इस त्रुटि हो रही पर रखने जब मैं अजगर 3 में निम्न कोड चलाएँ:लेखन त्रुटि: एक बाइट जैसी वस्तु की आवश्यकता है, 'str' नहीं - पोकीमॉन जाना हैक

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) 

यहाँ त्रुटि मैं मिलता है :

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' 

मैं एनकोड समारोह के माध्यम से बाइट्स fname1 परिवर्तित करने की कोशिश की है, लेकिन यह अभी भी समस्या का समाधान नहीं है। क्या कोई मुझे बता सकता है कि क्या गलत है?

+1

संभावित डुप्लिकेट [pickle.dump का उपयोग करना - TypeError: str होना चाहिए, बाइट्स नहीं होना चाहिए] (http://stackoverflow.com/questions/13906623/using-pickle-dump-typeerror-must-be-str-not- बाइट्स) –

उत्तर

9

आप द्विआधारी मोड में फ़ाइल को खोलने की जरूरत है:

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

और जब लेखन:

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

एह, यह अभी भी मुझे एक त्रुटि दे रहा है: –

+0

टाइपरर: अमान्य फ़ाइल: <_io.BufferedReader name = 'auth_cache_mavengences'> –

+0

यह कोड के किसी अन्य भाग के साथ एक समस्या हो सकती है। यद्यपि कि आपकी इस सहायता के लिए धन्यवाद! –

4

अजगर 3 में आप विशेष रूप से कॉल करने के लिए या तो 'rb' या 'पश्चिम बंगाल' की जरूरत है।

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

आपको 'str' से 'बाइट्स' को बदलने की आवश्यकता है। इस प्रयास करें:

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)) 
0

मैं इस ढेर अतिप्रवाह लिंक करने के लिए वापस आते रहते हैं, तो मैं अगली बार जब मैं इसे की तलाश में आते हैं के लिए वास्तविक उत्तर पोस्ट कर रहा हूँ:

PickleDB में गड़बड़ है और होने की जरूरत है तय की।

लाइन pickledb.py

की 201

से:

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

रहे हैं:

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

समस्या हमेशा के लिए हल किया।

संबंधित मुद्दे