2015-03-29 27 views
5

unicode, dize olmalıdır:TypeError: değil Bu kodu vardır

... 
msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer} 
msg = cPickle.dumps(msgdict) 
print msg 

Ben bu olsun baskı msg:

(dp1 
S'mapper' 
p2 
(S's3n://myFolder/mapper.py' 
p3 
tp4 
sS'datafile' 
p5 
(S's3n://myFolder/test.txt' 
p6 
tp7 
sS'reducer' 
p8 
(S's3n://myFolder/reducer.py' 
p9 
tp10 
s. 

Sonra içeriğini almaya çalışırken Im:

for i in range(count): 
    m = q[0].read() 
    # this print returns a object Message 
    print m 
    # m.get_body()) returns the same of print msg above 
    msg = cPickle.loads(m.get_body()) 
Bu hataya sahip oldum

Birisi bu hatayı nasıl çözeceğini biliyor mu?

+0

Tüm dizeleri repr() işlevini denediniz mi? –

+0

'm',' q' veya 'get_body' nedir? – Daniel

cevap

7

aşağıdaki çizgiyi değiştirmek deneyin: m.get_body() için str() döküm By

msg = cPickle.loads(str(m.get_body())) 

, bu dize unicode ise, bir dizeye dönüştürür emin olur.

+0

Teşekkürler, çözümünüz işe yaradı! – UserX

+0

@UserX no problem :) –

İlgili konular