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'è fpil puntatore del file con cui stai lavorando; offsetindica quante posizioni ti sposterai; from_whatdefinisce il tuo punto di riferimento:
se omesso, il from_whatvalore 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.
seekti sarà utile quando è necessario walklungo 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 seekfunzione 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,
readstai 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_CUReos.SEEK_ENDal posto dei numeri magici0,1e2, rispettivamente.