Questo modulo implementa una classe ed alcune funzioni utili per scrivere rapidamente un ciclo che operi sullo standard input o su una lista di file.
L'utilizzo tipico è il seguente:
import fileinput for line in fileinput.input(): process(line)
In questo esempio, si itera sulle righe di tutti i file elencati in
sys.argv[1:]
, utilizzando sys.stdin
se la lista degli
argomenti è vuota. Se il nome di un file passato è '-'
, viene
anch'esso rimpiazzato da sys.stdin
. Per specificare una lista alternativa di
nomi di file, passatela come primo argomento di
input(). È permesso usare anche un singolo nome di file.
Tutti i file vengono aperti in modalità testo. Se si verifica un errore di I/O durante l'apertura o la lettura di un file, viene sollevata un'eccezione IOError.
Se sys.stdin
viene utilizzato più di una volta, dopo il primo utilizzo non
verrà più restituita alcuna riga, eccetto forse per la modalità
interattiva, o se è stato esplicitamente reimpostato (es.: usando
sys.stdin.seek(0)
).
I file vuoti vengono aperti ed immediatamente chiusi; si può constatare la presenza di questi file nella lista solo quando l'ultimo file aperto è vuoto.
È possibile che l'ultima riga di un file non termini con il carattere di fine riga; le righe vengono restituite insieme al carattere di fine riga terminale, se presente.
La seguente funzione è l'interfaccia base di questo modulo:
[files[, inplace[, backup]]]) |
Le seguenti funzioni utilizzano lo stato globale creato da input(); se non è presente uno stato attivo, viene sollevata un'eccezione RuntimeError.
) |
None
.
) |
0
. Dopo che è stata letta l'ultima riga
dell'ultimo file, restituisce il numero di quella riga.
) |
0
. Dopo la lettura
dell'ultima riga dell'ultimo file, restituisce il numero di quella riga
all'interno di quel file.
) |
) |
sys.stdin
,
altrimenti restituisce false.
) |
) |
Anche la classe che implementa il comportamento sequenziale fornito dal modulo è disponibile per poter essere derivata:
[files[, inplace[, backup]]]) |
Filtro opzionale sul posto: se alla funzione
input() o al costruttore di FileInput viene passato
l'argomento a parola chiave inplace=1
, il file viene spostato in un altro
file di backup e lo standard output viene diretto al file di input (se un
file dello stesso nome del file di backup già esiste, verrà
sovrascritto senza sollevare eccezioni). Questo rende possibile
scrivere un filtro che riscrive il suo file di input sul posto.
Passando anche l'argomento a parola chiave
backup='.<qualche estensione>'
, si specifica l'estensione
che deve avere il file di backup, facendo sì che questo file di backup
non venga cancellato; infatti l'estensione predefinita dei file di backup è '.bak'
,
ed essi vengono cancellati dopo la chiusura del file di output.
Il filtraggio sul posto viene disabilitate durante la lettura da standard input.
Avvertenze: L'implementazione corrente non funziona con il filesystem 8+3 di MS-DOS.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.