Ho creato un mio piccolo script in pitone. Ho salvato il file pickle su Linux e poi l'ho usato su Windows e poi di nuovo su Linux, ma ora quel file non funziona su Linux ma funziona perfettamente su Windows. Is è così che python è coss-platform ma il file pickle non lo è. C'è qualche soluzione a questo ???Il file pickle di Python è multipiattaforma?
risposta
La salamoia di Python è perfettamente cross-platform.
Ciò è probabilmente dovuto alle differenze EOL (End-Of-Line) tra Windows e Linux. Assicurati di aprire i file pickle in modalità binaria sia quando li scrivi sia quando li leggi, usando rispettivamente le modalità "wb" e "rb" di open().
Nota: il passaggio di sottaceti tra diverse versioni di Python può causare problemi, quindi provare ad avere la stessa versione su entrambe le piattaforme.
'pickle' è [garantito per essere" retrocompatibile "] (http://docs.python.org/2/library/pickle.html#relationship-to-other-python-modules). Presumo questo significa che le versioni più recenti leggeranno i sottaceti da versioni precedenti, ma le versioni precedenti potrebbero non essere in grado di leggere i sottaceti dalle versioni più recenti. – max
È possibile utilizzare json
anziché pickle
. Se può salvare i tuoi dati, sai che è multipiattaforma.
Non downvoting, ma usare JSON per questa situazione sembra un po 'imbarazzante. – ChristopheD
Dipende davvero da cosa sta salvando. Se sono tutti gli elenchi di numeri e stringhe, JSON è fantastico. Se si tratta di dizionari e istanze di classe, non così tanto. – steveha
Sto salvando istanze di classe – vikithakar
Forse non si apre il file in modalità binaria? Vedi this stackoverflow question
Il modulo pickle
supports several different data formats. Se si specifica un particolare formato di pickle invece di utilizzare il valore predefinito (0), è possibile che si verifichino problemi di file binari multipiattaforma. È possibile utilizzare file di pickle ASCII semplici specificando il protocollo 0.
Pickle deve essere multipiattaforma, esistono problemi di versioning/protocol, (vedere http://docs.python.org/library/pickle.html#data-stream-format) ma in generale se si sta utilizzando la stessa versione di python sulle finestre e unix box, dovrebbero essere interoperabili.
Se stai usando salamoia come meccanismo di trasporto dei dati, si potrebbe prendere in considerazione i formati meno di attuazione specifiche per la memorizzazione dei dati, come ad esempio JSON, XML, CSV, YAML, ecc
Un interessante idea di prova è PyON (Notazione oggetto Python). La versione attuale sembra funzionare almeno per casi semplici secondo i miei test. Sembra che ci sia stato qualche disaccordo sulle mailing list, anche se il progetto è una buona idea.
- 1. Sintassi pickle Python
- 2. Pickle Python chiama cPickle?
- 3. Serializzazione Python - Perché pickle?
- 4. Come leggere il file pickle?
- 5. In MATLAB, come leggere il file pickle Python?
- 6. Utilizzo di python shelve multipiattaforma
- 7. Scelta del protocollo pickle Python?
- 8. Informazioni su Python Pickle Insecurity
- 9. Errore pickle in Python: UnicodeDecodeError
- 10. Libreria di notifica Python multipiattaforma
- 11. protocollo di pickle multiprocessing in python
- 12. Come posso leggere un database/file pickle Python da C?
- 13. Pickle vs output in un file in python
- 14. Come usare append con pickle in python?
- 15. Carica i dati dal file pickle Python in un ciclo?
- 16. multipiattaforma indirizzamento del file di configurazione
- 17. Pickle con classi personalizzate
- 18. SQLite è davvero multipiattaforma?
- 19. Come verificare se un file è stato creato da pickle?
- 20. che è più veloce per il caricamento: pickle o hdf5 in python
- 21. Pickle File troppo grande per caricare
- 22. Pickle rifiuta di serializzare il contenuto con il report di sedici ContentDisallowed: Rifiuto di deserializzare il contenuto non attendibile di tipo pickle
- 23. Pickle o JSON?
- 24. Python: salvataggio di oggetti e utilizzo di pickle. estensione del nome del file
- 25. Pickle leggero per i tipi base in python?
- 26. Vala è un linguaggio multipiattaforma?
- 27. Lettura di un file pickle (PANDAS Python Data Frame) in R
- 28. Perché il pickle python carica e scarica la dimensione di un oggetto sul disco?
- 29. Ruby è multipiattaforma come Java?
- 30. Pickle Python: correzione \ r caratteri prima del caricamento
Sottaceto di pitone, forse pungente. Problemi con la piattaforma di sottaceto potenzialmente prevenibili. Presentare la possibile proposta di prevenzione dei problemi, per favore. – aehiilrs