17.1.1 Oggetti RExec

Le istanze di RExec supportano i seguenti metodi:

r_eval( code)
code deve essere una stringa contenente un'espressione Python o un oggetto codice compilato, che verrà valutato nel modulo __main__ dell'ambiente limitato. Viene restituito il valore dell'espressione o dell'oggetto codice.

r_exec( code)
code deve essere una stringa contenente una o più righe di codice Python o un oggetto codice compilato, che verrà eseguito nel modulo __main__ dell'ambiente limitato.

r_execfile( filename)
Esegue il codice Python contenuto nel file filename nel modulo __main__ dell'ambiente limitato.

I metodi il cui nome inizia con "s_" sono simili alle funzioni che iniziano con "r_", ma al codice verrà garantito l'accesso alla versione limitata dei flussi standard di I/O sys.stdin, sys.stderr e sys.stdout.

s_eval( code)
code deve essere una stringa contenente un'espressione Python, che verrà valutata nell'ambiente limitato.

s_exec( code)
code deve essere una stringa contenente una o più righe di codice Python, che verranno eseguite nell'ambiente limitato.

s_execfile( code)
Esegue il codice Python contenuto nel file filename nell'ambiente limitato.

Gli oggetti RExec devono anche fornire supporto per vari metodi che verranno implicitamente richiamati dal codice eseguito nell'ambiente ristretto. La sovrascrittura di questi metodi in una sotto classe è un tecnica utilizzata per alterare la condotta imposta da un ambiente limitato.

r_import( modulename[, globals[, locals[, fromlist]]])
Importa il modulo modulename, sollevando un'eccezione ImportError se il modulo viene considerato insicuro.

r_open( filename[, mode[, bufsize]])
Metodo eseguito quando la funzione open() viene chiamata in un ambiente limitato. Gli argomenti sono identici a quelli di open() e deve essere restituito un oggetto di tipo file (o l'istanza di una classe compatibile con gli oggetti file). Il comportamento predefinito di RExec è quello di permettere l'apertura di tutti i file in lettura, ma impedire ogni accesso in scrittura. Vedete l'esempio sotto per un'implementazione meno restrittiva di r_open().

r_reload( module)
Ricarica l'oggetto modulo module, rianalizzandolo e reinizializzandolo.

r_unload( module)
Scarica dalla memoria l'oggetto modulo module (lo rimuove dal dizionario sys.modules dell'ambiente limitato).

E gli equivalenti con l'accesso ai flussi di I/O standard limitati:

s_import( modulename[, globals[, locals[, fromlist]]])
Importa il modulo modulename sollevando un'eccezione ImportError se il modulo viene considerato insicuro.

s_reload( module)
Ricarica l'oggetto modulo module, rianalizzandolo e reinizializzandolo.

s_unload( module)
Scarica dalla memoria il modulo module.

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