Sto cercando di imparare ad usare il modulo pickle
in Python:L'utilizzo di pickle.dump in Python
import pickle
x = 123
f = open('data.txt','w')
pickle.dump(x,f)
Ecco quello che ottengo:
Traceback (most recent call last):
File "D:\python\test.py", line 5, in <module>
pickle.dump(x,f)
TypeError: must be str, not bytes
Tuttavia, questo codice funziona solo bene:
import pickle
dump = pickle.dump(123)
print(dump)
che cosa sto facendo di sbagliato?
Solo qualcosa degno di nota: per tutte le modalità di file in Python, si dovrebbe aggiungere un ' 'b'' alla fine della stringa, anche se è solo'' rb'' , dal momento che è indipendente dalla piattaforma. – Edwin
@Edwin: Non esegue traslitterazioni newline specifiche della piattaforma, ma in 3.x c'è una differenza importante: i file aperti in modalità binaria gestiscono solo byte, i file aperti in modalità testo gestiscono solo il testo ("unicode"). Mentre la modalità binaria ha sicuramente senso per i dati binari e la modalità testo potrebbe non essere applicabile in alcuni altri casi, il tuo suggerimento è troppo generico. Se decidi di decodificare i byte in testo, l'apertura in modalità binaria di solito non ha senso. È più semplice e robusto lasciare che Python lo gestisca, ed è meglio indovinare le codifiche piuttosto che le codifiche hardcoding. – delnan
@delnan Ah, ok; Mi sono appena ricordato di averlo letto da qualche parte sul sito python.org. – Edwin