Questo modulo genera file e directory temporanei. Funziona su tutte le piattaforme supportate.
Nella versione 2.3 di Python, questo modulo è stato revisionato per accrescerne la sicurezza. Adesso fornisce tre nuove funzioni NamedTemporaryFile(), mkstemp() e mkdtemp() che dovrebbero eliminare tutti i casi in cui si debba usare la funzione insicura mktemp(). I nomi dei file temporanei creati da questo modulo non contengono più l'ID del processo; viene invece usata una stringa di sei caratteri casuali.
Inoltre, tutte le funzioni chiamabili dall'utente ora prendono argomenti aggiuntivi, consentendo il controllo diretto sulla posizione e sul nome dei file temporanei. Non è più necessario usare le variabili globali tempdir e template. Per mantenere la compatibilità all'indietro, l'ordine degli argomenti risulta piuttosto bizzarro; viene raccomandato, per chiarezza, di usare gli argomenti a parola chiave, keyword.
Il modulo definisce le seguenti funzioni chiamabili dall'utente:
[mode='w+b' [,
bufsize=-1 [,
suffix[, prefix[, dir]]]]]) |
Il parametro mode viene impostato in modo predefinito a
'w+b'
, in modo tale che il file creato possa venire letto e
scritto senza essere chiuso. Viene usata la modalità binaria, in modo
tale che si comporti coerentemente su tutte le piattaforme,
indipendentemente dal tipo dei dati immagazzinati. La variabile
bufsize viene impostata al valore predefinito -1
, a
significare che viene usato il sistema operativo predefinito.
I parametri dir, prefix e suffix vengono passati a mkstemp().
[mode='w+b' [,
bufsize=-1 [,
suffix[, prefix[,
dir]]]]]) |
[suffix[, prefix[, dir[, text]]]]) |
Diversamente da TemporaryFile(), l'utente di mkstemp() è responsabile della cancellazione del file temporaneo, quando realizzato con questa funzione.
Se il suffisso suffix viene specificato, il nome del file terminerà con quel suffisso, altrimenti non avrà suffisso. mkstemp() non inserisce un punto tra il nome del file ed il suffisso; se ne avete bisogno, mettetelo all'inizio del suffisso suffix.
Se il prefisso prefix viene specificato, il nome del file inizierà con quel prefisso; altrimenti verrà utilizzato un prefisso predefinito.
Se dir viene specificata, il file verrà creato in quella directory; altrimenti verrà usata una directory predefinita.
Se text viene specificato, questo indicherà se il file debba venire aperto in modalità binaria (predefinita) o testuale. Su qualche piattaforma, questo non fa differenza.
mkstemp() restituisce una tupla contenente un descrittore di file aperto (come dovrebbe venire restituito da os.open()) e il percorso assoluto di quel file, in questo ordine. Nuovo nella versione 2.3.
[suffix[, prefix[, dir]]]) |
L'utente di mkdtemp() è responsabile della cancellazione della directory temporanea e del suo contenuto, quando realizzata con questa funzione.
Gli argomenti prefix, suffix e dir sono gli stessi della funzione mkstemp().
mkdtemp() restituisce il percorso assoluto della nuova directory. Nuovo nella versione 2.3.
[suffix[, prefix[, dir]]]) |
L'uso di questa funzione può introdurre un buco di sicurezza nel vostro programma. Nel tempo che voi impiegate per fare qualcosa con il nome del file restituito, qualcun altro potrebbe avervi già abilmente raggirato.
Il modulo usa due variabili globali che dicono ad esso come costruire un nome temporaneo. Queste vengono inizializzate alla prima chiamata di una delle funzioni sottostanti. Il chiamante le può modificare, ma questo è sconsigliato; usate invece gli appropriati argomenti della funzione.
None
, questa variabile
definisce il valore predefinito dell'argomento dir per tutte le
funzioni definite in questo modulo.
Se tempdir
non è impostato o è None
per nessuna chiamata
e a nessuna delle funzioni precedenti, Python cerca una lista standard
di directory ed imposta tempdir alla prima directory nella quale
l'utente che effettua la chiamata abbia il permesso di creare dei file.
La lista è:
) |
tempdir
non è None
, allora semplicemente
restituisce il suo contenuto; altrimenti, la ricerca decritta più avanti
viene svolta e restituito il risultato.
None
, questa variabile
definisce il prefisso del componente finale del nome del file restituito
da mktemp(). Una stringa di sei lettere e numeri casuali
viene aggiunta al prefisso, per rendere univoco il nome del file. Su
Windows, il prefisso predefinito è ~T; su tutti
gli altri sistemi è tmp.
Le versioni più vecchie di questo modulo usualmente richiedono che
questo template
sia impostato a None
dopo una chiamata
os.fork(); questo non è più necessario dalla versione
1.5.2.
) |