Risposte:
Per quanto riguarda seek()
non c'è troppo di cui preoccuparsi.
Prima di tutto, è utile quando si opera su un file aperto.
È importante notare che la sua sintassi è la seguente:
fp.seek(offset, from_what)
dov'è fp
il puntatore del file con cui stai lavorando; offset
indica quante posizioni ti sposterai; from_what
definisce il tuo punto di riferimento:
se omesso, il from_what
valore predefinito è 0.
Non dimenticare mai che quando si gestiscono i file, ci sarà sempre una posizione all'interno del file su cui si sta attualmente lavorando. Quando è appena aperto, quella posizione è l'inizio del file, ma mentre lavori con esso, puoi avanzare.
seek
ti sarà utile quando è necessario walk
lungo quel file aperto, proprio come un percorso in cui stai viaggiando.
Quando si apre un file, il sistema punta all'inizio del file. Qualsiasi lettura o scrittura che fai accadrà dall'inizio. Un'operazione seek()
sposta quel puntatore su un'altra parte del file in modo da poter leggere o scrivere in quel punto.
Quindi, se si desidera leggere l'intero file ma saltare i primi 20 byte, aprire il file seek(20)
per passare al punto in cui si desidera iniziare a leggere, quindi continuare con la lettura del file.
Oppure dire che si desidera leggere ogni decimo byte, è possibile scrivere un ciclo che lo fa seek(9, 1)
(si sposta di 9 byte in avanti rispetto alle posizioni correnti), read(1)
(legge un byte), ripetere.
La seek
funzione prevede un offset in byte.
Quindi se hai un file di testo con il seguente contenuto:
simple.txt
abc
Puoi saltare 1 byte per saltare il primo carattere come segue:
fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc
fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]
Nota: quando chiami,
read
stai cambiando la posizione della testina di lettura, che agisce comeseek
.
Per le stringhe, dimentica di usare WHENCE: usa f.seek (0) per posizionare all'inizio del file e f.seek (len (f) +1) per posizionare alla fine del file. Usa open (file, "r +") per leggere / scrivere ovunque in un file. Se usi "a +" sarai in grado di scrivere (aggiungi) alla fine del file indipendentemente da dove posizioni il cursore.
os.SEEK_SET
,os.SEEK_CUR
eos.SEEK_END
al posto dei numeri magici0
,1
e2
, rispettivamente.