8.14 posixfile -- Oggetti simile a file con il supporto per il locking

Disponibilità: Unix.

Deprecato dalla versione 1.5 di Python. L'operazione di locking che questo modulo fornisce viene eseguita meglio e con maggiore portabilità dalla chiamata fcntl.lockf().

Questo modulo implementa alcune funzionalità addizionali sugli oggetti file built-in. In particolare, implementa il locking (NdT: bloccaggio) dei file, il controllo sulle opzioni relative ai file ed una semplice interfaccia per duplicare gli oggetti file. Il modulo definisce un nuovo oggetto file, l'oggetto posixfile. Questi possiede tutti i metodi standard degli oggetti file ed aggiunge i metodi descritti sotto. Questo modulo funziona solamente su certi tipi di Unix, poiché utilizza fcntl.fcntl() per il locking dei file.

Per istanziare un oggetto posixfile, usate la funzione open() del modulo posixfile. L'oggetto risultante somiglia e si comporta approssimativamente allo stesso modo di un oggetto file standard.

Il modulo posixfile definisce le seguenti costanti:

SEEK_SET
L'offset viene calcolato dall'inizio del file.

SEEK_CUR
L'offset viene calcolato dalla posizione corrente nel file.

SEEK_END
L'offset viene calcolato dalla fine del file.

Il modulo posixfile definisce le seguenti funzioni:

open( filename[, mode[, bufsize]])
Crea un nuovo oggetto posixfile in base al nome del file e la modalità passati in argomento. Gli argomenti filename, mode e bufsize vengono interpretati alla stessa maniera della funzione open().

fileopen( fileobject)
Crea un nuovo oggetto posixfile a partire dall'oggetto file standard fileobject passato come argomento. L'oggetto risultante possiede lo stesso nome e la stessa modalità dell'oggetto file originale.

L'oggetto posixfile definisce gli ulteriori seguenti metodi:

lock( fmt, [len[, start[, whence]]])
Esegue il lock sulla sezione specificata del file alla quale l'oggetto file si riferisce. Il formato viene esposto sotto nella tabella. L'argomento len specifica la lunghezza della sezione sulla quale si dovrebbe eseguire il lock. Il valore predefinito è 0. start specifica l'offset di partenza della sezione, il cui valore predefinito è 0. L'argomento whence specifica da dove è relativo l'offset. Esso accetta una fra le costanti SEEK_SET, SEEK_CUR o SEEK_END. Il valore predefinito è SEEK_SET. Per maggiori informazioni su questi argomenti fate riferimento alla pagina del manuale fcntl(2) del vostro sistema.

flags( [flags])
Imposta le opzioni specificate per il file al quale si riferisce l'oggetto file. Viene eseguito un OR tra le nuove e le vecchie opzioni, se non specificato altrimenti. Il formato viene spiegato sotto in una tabella. Senza l'argomento flags viene restituita una stringa che indica le opzioni correnti (lo stesso del modificatore "?"). Per maggiori informazioni riguardo le opzioni, fate riferimento alla pagina del manuale fcntl(2) del vostro sistema.

dup( )
Duplica l'oggetto file, oltre al puntatore al file ed al suo descrittore sottostanti. L'oggetto risultante si comporta come se fosse stato aperto nuovamente.

dup2( fd)
Duplica il file oggetto, il sottostante puntatore al file, ed il descrittore di file. Il nuovo oggetto possiedera` il dato descrittore di file. Altrimenti l'oggetto risultante si comportera` come se fosse un nuovo oggetto aperto

file( )
Restituisce l'oggetto file standard sul quale è basato l'oggetto posixfile. A volte questo metodo diviene necessario per funzioni che persistono su di un oggetto file standard.

Tutti i metodi sollevano un'eccezione IOError quando la richiesta fallisce.

I caratteri di formattazione per il metodo lock() possiedono i seguenti significati:

Formato  Significato 
u Esegue l'unlock sulla regione specificata
r richiede un lock in lettura per la regione specificata
w richiede un lock in scrittura per la regione specificata

I seguenti modificatori possono venire ulteriormente aggiunti al formato:

Modificatore  Significato  Note 
| Attende sino a quando il lock non viene assegnato  
? Restituisce il primo lock in conflitto con il lock richiesto, o None se non vi è alcun conflitto (1)

Note:

(1)
Il lock restituito è nel formato (mode, len, start, whence, pid) dove mode è un carattere che rappresenta il tipo di lock ('r' or 'w'). Questo modificatore impedisce che una richiesta venga assegnata; compare solamente a scopo di interrogazione.

I caratteri di formattazione per il metodo flags() possiedono i seguenti significati:

Formato  Significato 
a opzione di sola aggiunta
c opzione di chiusura dopo l'esecuzione
n opzione di annullamento del ritardo (opzione chiamata anche non bloccante)
s opzione di sincronizzazione

Inoltre il seguenti modificatori possono venire aggiunti al formato:

Modificatore  Significato  Note 
! imposta le opzioni specificate in 'off', invece della predefinita 'on' (1)
= rimpiazza le opzioni, invece dell'operazione predefinita 'OR' (1)
? restituisce una stringa nella quale i caratteri rappresentano le opzioni impostate. (2)

Note:

(1)
I modificatori "!" e "=" si escludono a vicenda.

(2)
Questa stringa rappresenta le opzioni che si potrebbero presentare nel caso venissero alterate dalla stessa chiamata.

Esempi:

import posixfile

file = posixfile.open('/tmp/test', 'w')
file.lock('w|')
...
file.lock('u')
file.close()
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.