12.10.1 Oggetti MultiFile

Un'istanza MultiFile possiede i seguenti metodi:

readline( str)
Legge una riga. Se la riga � composta da dati (non un separatore di sezione o un marcatore di fine o un vero EOF) la restituisce. Se la riga corrisponde al delimitatore impilato pi� recentemente, restituisce '' ed imposta self.last a 1 o a 0, a seconda che la corrispondenza sia o non sia un marcatore di fine. Se la riga corrisponde ad un qualsiasi altro delimitatore impilato, solleva un'eccezione Error. Al raggiungimento della fine del file sul sottostante oggetto flusso, il metodo genera un errore, a meno che non siano stati estratti dalla pila tutti i delimitatori.

readlines( str)
Restituisce tutte le righe rimanenti in questa parte come lista di stringhe.

read( )
Legge tutte le righe, fino alla sezione successiva. Le restituisce come singola stringa (multiriga). Notare che questo metodo non accetta un argomento legato alla dimensione!

seek( pos[, whence])
Ricerca. Gli indici di ricerca sono relativi all'inizio della sezione corrente. Gli argomenti pos e whence vengono interpretati come nella ricerca su file.

tell( )
Restituisce la posizione nel file relativa all'inizio della sezione corrente.

next( )
Salta le righe fino alla sezione successiva (cio�, legge le righe finch� non viene utilizzato un divisore di sezione o un marcatore di fine). Restituisce vero se tale sezione esiste, falso se viene trovato un marcatore di fine. Riabilita il delimitatore impilato pi� di recente.

is_data( str)
Restituisce vero se str � costituita da dati e falso in caso risulti un limite della sezione. Cosi come scritto, controlla la presenza di un prefisso diverso da '--' all'inizio della riga (cosa che tutti i delimitatori MIME possiedono) ma viene dichiarato cosicch� possa essere sovrascritto nelle classi derivate.

Notare che questo test viene utilizzato come avanguardia per i test effettivi sui delimitatori; se restituisce sempre falso rallenter� semplicemente la velocit� d'elaborazione, ma non provocher� il fallimento dei test stessi.

push( str)
Inserisce nella pila una stringa di delimitazione. Quando viene trovata come riga di input una versione debitamente corredata di delimitatore, verr� interpretata come divisore di sezione o marcatore. Tutte le operazioni di lettura seguenti restituiranno la stringa vuota per indicare la fine del file, finch� una chiamata al metodo pop() non rimuover� il delimitatore o una chiamata al metodo next() lo riabiliter�.

È possibile inserire nella pila pi� di un delimitatore. Incontrare il delimitatore inserito pi� recentemente restituir� EOF; incontrare ogni altro delimitatore sollever� un'eccezione Error.

pop( )
Estrae dalla pila un delimitatore di sezione. Questo delimitatore non verr� pi� interpretato come EOF.

section_divider( str)
Trasforma un delimitatore in una riga che divider� la sezione. Come comportamento predefinito, questo metodo antepone '--' (inserito in ogni delimitatore di sezione MIME) ma viene dichiarato in maniera tale che possa essere sovrascritto nelle classi derivate. Questo metodo non ha bisogno di aggiungere in coda LF o CR-LF, dato che il confronto con il risultato ignora gli spazi vuoti iniziali.

end_marker( str)
Trasforma un delimitatore in una riga marcatore di fine. Come comportamento predefinito, questo metodo antepone '--' ed aggiunge in coda '--' (come un marcatore di fine messaggio MIME-multiparte) ma viene dichiarato in maniera tale che possa essere sovrascritto nelle classi derivate. Questo metodo non ha bisogno di aggiungere in coda LF o CR-LF, dato che il confronto con il risultato ignora gli spazi vuoti iniziali.

Infine, le istanze MultiFile hanno due variabili d'istanza pubbliche:

level
Profondit� di annidamento della parte corrente.

last
Vero se l'ultima condizione di end-of-file era relativa ad un marcatore di fine messaggio.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.