Respuestas:
En cuanto a que seek()
no hay mucho de qué preocuparse.
En primer lugar, es útil cuando se opera sobre un archivo abierto.
Es importante tener en cuenta que su sintaxis es la siguiente:
fp.seek(offset, from_what)
¿Dónde fp
está el puntero de archivo con el que está trabajando? offset
significa cuántas posiciones moverás; from_what
define su punto de referencia:
si se omite, el valor from_what
predeterminado es 0.
Nunca olvides que al administrar archivos, siempre habrá una posición dentro de ese archivo donde estás trabajando actualmente. Cuando se abre, esa posición es el comienzo del archivo, pero a medida que trabaja con él, puede avanzar.
seek
te será útil cuando necesites walk
ese archivo abierto, como un camino por el que estás viajando.
Cuando abre un archivo, el sistema señala el comienzo del archivo. Cualquier lectura o escritura que hagas pasará desde el principio. Una seek()
operación mueve ese puntero a otra parte del archivo para que pueda leer o escribir en ese lugar.
Por lo tanto, si desea leer el archivo completo pero omite los primeros 20 bytes, abra el archivo, seek(20)
vaya al lugar donde desea comenzar a leer, luego continúe leyendo el archivo.
O digamos que desea leer cada 10 bytes, podría escribir un ciclo que lo haga seek(9, 1)
(mueve 9 bytes hacia adelante en relación con las posiciones actuales), read(1)
(lee un byte), repita.
La seek
función espera es un desplazamiento en bytes.
Entonces, si tiene un archivo de texto con el siguiente contenido:
simple.txt
abc
Puedes saltar 1 byte para omitir el primer carácter de la siguiente manera:
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: Una vez que llama
read
, está cambiando la posición del cabezal de lectura, que es como actuarseek
.
Para las cadenas, olvídate de usar WHENCE: usa f.seek (0) para colocar al principio del archivo y f.seek (len (f) +1) para colocar al final del archivo. Use abrir (archivo, "r +") para leer / escribir en cualquier parte de un archivo. Si usa "a +", solo podrá escribir (agregar) al final del archivo, independientemente de dónde coloque el cursor.
os.SEEK_SET
,os.SEEK_CUR
yos.SEEK_END
en lugar de los números mágicos0
,1
y2
, respectivamente.