2012-07-27 9 views
86

Por favor, disculpe mi confusión aquí, pero he leído la documentación relativa a la función de búsqueda() en Python (después de tener que usarlo) y aunque me ayudó aún estoy un poco confundido sobre el significado real de lo que hace, ninguna explicación son muy apreciados, gracias.función seek()?

+4

puede considerar aceptar la respuesta con una mejor explicación y más karma –

Respuesta

149

En cuanto seek() no hay mucho que preocuparse.

En primer lugar, es útil cuando se trabaja sobre un archivo abierto.

Es importante tener en cuenta que su sintaxis es la siguiente:

fp.seek(offset, from_what) 

donde fp es el puntero del archivo que está trabajando; offset significa cuántas posiciones moverá; from_what define a su punto de referencia:

  • : significa que su punto de referencia es el comenzando del archivo
  • : significa que su punto de referencia es el actual posición del archivo
  • : significa que su punto de referencia es el extremo del archivo

si se omite, por defecto es 0. from_what

Nunca hay que olvidar que en la gestión de archivos, siempre habrá una posición dentro de ese archivo en el que está trabajando actualmente. Cuando acaba de abrir, esa posición es el comienzo del archivo, pero a medida que trabaja con él, puede avanzar.
seek será útil para usted cuando necesite walk lo largo de ese archivo abierto, al igual que un camino que viaja en.

+69

+1 para explicar el segundo parámetro, aunque me gustaría añadir que probablemente debería usar las constantes 'os.SEEK_SET',' os.SEEK_CUR', y 'os.SEEK_END' en lugar de los números mágicos' 0', '1' y' 2', respectivamente. – ArtOfWarfare

33

Al abrir un archivo, los puntos del sistema al principio del archivo. Cualquier lectura o escritura que hagas pasará desde el principio. Una operación seek() mueve ese puntero a alguna otra parte del archivo para que pueda leer o escribir en ese lugar.

Por lo tanto, si desea leer todo el archivo pero omita los primeros 20 bytes, abra el archivo, busque (20) para ir al lugar donde desea comenzar a leer, luego continúe leyendo el archivo.

O digamos que quiere leer cada décimo byte, puede escribir un bucle que sí busca (9, 1) (mueve 9 bytes hacia adelante en relación con las posiciones actuales), lee un byte, repita.

+12

-1: esta respuesta no explica el segundo parámetro, y en realidad, tal como está redactado, hace que suene como que el segundo parámetro determina cuántos bytes se leen. – ArtOfWarfare

Cuestiones relacionadas