Domanda

Domanda:

Come faccio ad avere un flusso di byte che funziona come StringIO per Python 2.5?

applicazione:

Sono la conversione di un file PDF a testo, ma non voglio salvare un file sul disco rigido.

Altri pensieri:

ho pensato che avrei potuto usare StringIO, ma non c'è nessun parametro modalità (immagino "String" implica modalità testo).

A quanto pare la classe io.BytesIO è nuova in v2.6, in modo che non funziona per me.

Ho una soluzione con il modulo tempfile, ma vorrei evitare qualsiasi lettura / scrittura da / per il disco fisso.

È stato utile?

Soluzione

In Python 2.x, "stringa" significa "byte", e "unicode" significa "stringa". Si consiglia di utilizzare i moduli StringIO o cStringIO. La modalità dipenderà da quale tipo di dati si passa come parametro buffer.

Altri suggerimenti

Se si lavora con i PDF, quindi StringIO dovrebbe andare bene fino a quando si paga attenzione ai documenti:

  

L'oggetto StringIO accetta sia Unicode o stringhe a 8 bit, ma mischiare i due potrebbe richiedere una certa cura. Se vengono utilizzati entrambi, stringhe a 8 bit che non possono essere interpretate come 7-bit ASCII (che utilizzano l'8 bit) causerà un UnicodeError per essere sollevata quando getvalue () è chiamato.

Nota: questo è non vero per cStringIO:

  

A differenza dei file di memoria attuate dal modulo StringIO, quelli forniti da questo modulo non sono in grado di accettare stringhe Unicode che non possono essere codificati come stringhe ASCII.

Vedere la documentazione completa all'indirizzo:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top